Get方法可以正常返回值,POST方法提示:远程服务器返回错误: (400) 错误的请求。
服务端代码如下:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class RestService
{
[WebInvoke(UriTemplate = "Create", Method = "POST")]
public string Create(string s)
{
return s;
}
[WebGet(UriTemplate = "Get?id={id}",RequestFormat = WebMessageFormat.Json)]
public SampleItem Get(string id)
{
return new SampleItem {Id = 1, StringValue = "test"};
}
}
客户端调用代码如下:
WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
string tt = webClient.DownloadString("http://localhost:7000/RestService/Get?id=tt");
Console.WriteLine(tt);
WebClient client=new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
client.Headers[HttpRequestHeader.ContentType] = "application/json";
//下一行报错
client.UploadString(new Uri("http://localhost:7000/RestService/Create", UriKind.Absolute), "POST", "test");
------解决方案--------------------
建议检查下配置
------解决方案--------------------
string post 比较特殊的。要加上 [FormBody] 特性。