2015-09-25 447 views
0

我试图使用RestSharp连接到服务器。但我得到HTTP Error 406 Not acceptable。 这里是Web服务响应:执行restsharp请求后的HTTP错误406

{"metaInfo":{"ErrorString":" ","ErrorCode":" ","Result":true},"userModel": 
{"UserId":"123qwe","UserName":"aaa","FirstName":"ALi","LastName":"TbT"}} 

REST服务实际上是我测试创建了一个简单的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和元信息类:

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); 

你能告诉我问题是什么吗? 我认为标题或编码或类似的东西有问题。我对吗?

回答

1

此错误是特定于程序员创建您所调用的服务的方式。从C#视角来看你的代码没有问题,但是服务作者选择实现他们的服务的方式并不喜欢服务调用中的某些东西。你将不得不参考他们的文档或询问他们的程序员之一。

这是一个HTTP错误的解释406 (从http://www.checkupdown.com/status/E406.html拍摄):

固定406错误 - 一般

在Web浏览器极少会出现此错误,因为大多数 浏览器将接受任何数据从Web服务器返回。

如果客户端不是Web浏览器,那么任何人都只能调查 问题通过查看客户端 系统

产生的接受头部考虑这些头文件来修改:

•接受:客户端接受的MIME类型。例如,浏览器 可能只接受返回类型的数据(HTML文件,GIF文件等),它会知道如何处理。
•Accept-Charset:客户端接受的字符集为 。
•Accept-Encoding: 客户端接受的数据编码,例如:它理解的文件格式。 •接受 - 语言:客户接受的自然语言(英语,德语等) 。 •接受范围:客户端是否接受来自 资源的字节范围,即资源的一部分。

例如,您可能需要添加到您的要求:

request.AddHeader("Accept", "application/json"); 
+0

您好。感谢您的回答。其实没有服务提供商。 “Rest”响应是我自己在一个简单的php文件中创建的。这是一个以json格式编码的简单数组。你能否看看更新后的问题。 –

+0

也许试试这个? request.AddHeader(“Accept”,“application/json”); –

+1

谢谢,我发现了这个问题。问题是我已经写了'test'作为请求Uri,但我应该使用'test.php'代替!我不知道为什么它抛出一个不可接受的错误代码,而不是简单地扔404未找到的消息! –