我正在尝试使用RestSharp连接到服务器。但我得到HTTP Error 406 Not acceptable
。
以下是Web服务响应:
{"metaInfo":{"ErrorString":" ","ErrorCode":" ","Result":true},"userModel":
{"UserId":"123qwe","UserName":"aaa","FirstName":"ALi","LastName":"TbT"}}
其余服务实际上是我为测试创建的一个简单的php文件:
<?php
$a = array("metaInfo"=>array("ErrorString"=>" ","ErrorCode"=>" ","Result"=>true),"userModel"=>array("UserId"=>"123qwe","UserName"=>"aaa","FirstName"=>"ALi","LastName"=>"TbT"));
echo json_encode($a);
?>
这是RegisterResult和MetaInfo类:
public class RegisterResult
{
public MetaInfo metaInfo { get; set; }
}
public class MetaInfo
{
public string ErrorString { get; set; }
public string ErrorCode { get; set; }
public bool Result { get; set; }
}
运行休息请求的代码如下:
var client = new RestClient(Configuration.PortalUri);
var request = new RestRequest(requestUri, HttpMethod.Post);
var asyncHandle = await client.Execute<RegisterResult>(request);
你可以告诉我这是什么问题吗? 我认为标题或编码或类似内容有问题。我是对的吗?
答案 0 :(得分:1)
此错误特定于程序员创建您正在调用的服务的方式。从C#角度来看,您的代码没有任何问题,但服务作者选择实现其服务的方式与服务调用中的某些内容并不相同。您将不得不参考他们的文档或询问他们的程序员。
这是对http错误406的解释 (取自http://www.checkupdown.com/status/E406.html):
修复406错误 - 一般
此错误在Web浏览器中很少发生,因为大多数情况 浏览器将接受从Web服务器返回的任何数据。
如果客户端不是Web浏览器,那么任何人都只能进行调查 通过查看客户端生成的Accept标头来解决问题 系统
考虑修改这些标题:
•接受:客户端接受的MIME类型。例如,浏览器 它可能只接受返回类型的数据(HTML文件,GIF文件等) 知道如何处理。
•Accept-Charset:接受的字符集 客户。
•Accept-Encoding:接受的数据编码 客户例如它理解的文件格式。 •接受语言: 客户接受的自然语言(英语,德语等)。 •Accept-Ranges:客户端是否接受来自的字节范围 资源,即资源的一部分。
例如,您可能需要将此添加到您的请求中:
request.AddHeader("Accept", "application/json");