【问题标题】:RestResponse is null on POST request using RestSharpRestResponse 在使用 RestSharp 的 POST 请求中为空
【发布时间】:2013-08-10 23:08:28
【问题描述】:

我正在使用 RestSharp(在 windows phone 7.1 客户端上)发出 POST 请求。我将字符串发送到请求正文中的服务。看起来服务已成功调用并返回正确的值(整数),但响应对象为空:

client.ExecuteAsync<T>(request, (response) => {
    data = response.Data;  // response is null in debugger
});

我不明白为什么会这样。

【问题讨论】:

  • 您是否监控过实际请求(使用 Fiddler 或类似工具)以确认是否有实际请求正在发出并有响应返回?

标签: windows-phone-7.1 restsharp


【解决方案1】:

&lt;T&gt; 不是该调用的有效值。除非您将其包装在通用方法中,否则我不确定它是否会在那里构建。

另外,响应是否以纯文本形式返回?返回的 Content-Type 是什么?最有可能的是,您应该只使用不带泛型参数的ExecuteAsync(request, callback),并从响应正文的字符串response.Content 中获取数据。 response.Data 用于自动反序列化的 XML 或 JSON(或自定义)响应,如果您使用指定要反序列化的类型的泛型方法重载。

【讨论】:

  • RestSharp for WP 中没有 Execute 方法。但是我将其更改为没有 的 client.ExecuteAsync。响应对象仍然为空,我无法访问它的属性。 Web 服务返回一个整数值,我应该从响应对象中获取它(可能按照您的建议通过 Content 属性)。
  • 如果response对象为null,ErrorException里面有什么吗?
  • ErrorException 为空。我添加了 try catch 块,但没有发生异常。
【解决方案2】:

这似乎是 RestSharp 异步调用的一个持续问题 - 对于 HTTP 传输错误,ErrorException 对象无用(返回 null)。如果返回的不是 HttpStatusCode.OK,请检查 StatusCode 属性。 StatusDescription 也不是非常有用,因为它与来自服务器响应负载的完整状态消息不匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多