httpclient第二次返回空字符串

本文关键字:字符串 返回 第二次 httpclient | 更新日期: 2023-09-27 18:05:15

我现在有这样的代码:

var fieldBoundary = Properties.Resources.TestFieldBoundary;
httpClient.Setup(
    x =>
        x.GetAsync(It.Is<Uri>(url => url.AbsoluteUri == APIUrl.AbsoluteUri + <my url>)))
    .Returns(
        Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new StringContent(Encoding.Default.GetString(fieldBoundary))
        }));

第一次使用这个模拟http客户端,我得到了我期望的响应。然而,当我用相同的模拟对象第二次调用相同的URL时,我得到一个成功的响应,但响应是一个空字符串或零长度字节数组。你有什么想法吗?

httpclient第二次返回空字符串

Returms改为使用函数

httpClient
    .Setup(x => x.GetAsync(It.Is<Uri>(url => url.AbsoluteUri == APIUrl.AbsoluteUri + <my url>)))
    .Returns(() => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) {
            Content = new StringContent(Encoding.Default.GetString(fieldBoundary))
        })
    );

将在每次调用模拟方法时调用该函数,而不是在重复调用时返回相同的实例。这就是为什么当你第二次调用时,字符串内容流指针已经在末尾了。