所以我写了我的第一个 WCF 项目,似乎它使用我的浏览器和 jquery 工作,但后来我写了一个客户端,事情有点搞砸了......实际上似乎我对那个客户端所做的一切都会导致 400 错误的请求响应。 ..所以我读了一些帖子,发现一个很好的整理方法是使用提琴手,然后开始四处挑选......
由于提琴手无法识别我的客户,我使用我的客户将数据直接发送给它...... https://docs.google.com/file/d/0ByOtHJSZT_GtNHZqTVZMdVVqZEU/edit?usp=sharing 你可以看到截图在这里。
正如我所看到的,唯一不同的是一些标题的泄漏(这对我来说似乎并不真正有用)并且一个使用内容类型作为应用程序/jsonp另一个文本/html(我认为这是主要问题) . 不好的是我在发送请求之前设置了 content-type 标头,但是没有结果,请注意在右侧面板中您仍然可以看到 application/json。我越来越糊涂了。
private void SendSelectedFile()
{
string url = "http://" + WindowsFormsApplication1.Properties.Settings.Default.HostAddress + "/Service1.svc/rest/PostFileToServer";
string jsonMsg = "{\"fileContentAsBase64String\":\"" + this.textBox1.Text + "\",\"where\":\"D:\\Temp.dwg\"}";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(jsonMsg);
HttpWebRequest wr = WebRequest.Create(new Uri(url)) as HttpWebRequest;
wr.Method = "POST";
wr.ContentType = "application/json; charset=utf-8";
wr.ContentLength = buffer.Length;
//wr.TransferEncoding = "UTF-8";
System.IO.Stream rs = wr.GetRequestStream();
rs.Write(buffer , 0, buffer.Length);
rs.Close();
WebResponse response = wr.GetResponse();
}
这是服务的接口
[WebInvoke(
Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/PostFileToServer"
)]
Boolean PostFileToServer(string fileContentAsBase64String, string where);