だから私は最初の WCF プロジェクトを書きました。それは私のブラウザーと jquery を使用して動作しているように見えますが、クライアントを書き、物事が少し混乱しました...実際には、そのクライアントで行うすべてのことは 400 の悪い要求応答につながるようです。 ..だから私はいくつかの投稿を読んで、物事を整理する良い方法がフィドラーを使用していることを発見し、選び始めました...
フィドラーはクライアントを識別できないため、クライアントを使用してデータを直接クライアントに送信しました ... https://docs.google.com/file/d/0ByOtHJSZT_GtNHZqTVZMdVVqZEU/edit?usp=sharingスクリーンショットはこちら。
私が見ることができる唯一の違いは、いくつかのヘッダーのリークであり(これは私には本当に役に立たないようです)、1つはコンテンツタイプをapplication/jsonpとして使用し、もう1つはtext/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);