Windows Phone 7からWebサービスに対して非常に基本的なHTTP POSTを実行しようとしているアプリ。私は3つの他のモバイルプラットフォームで使用しているので、Webサービスは正常に動作していることが分かります。WP7 HttpWebRequest POST、サーバはエミュレータで "{result: 'ok'} "を返すが、デバイスで "error:NotFound"を返す
私が受けてるhttp://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetrequeststream.aspx
string boundary = DateTime.Now.Ticks.ToString();
private void POST_TEST(object sender, RoutedEventArgs e)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Constants.JSON_URL_PREFIX + Settings.Settings.DeviceID + "/inquiry/new/");
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
public void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
Stream postStream = request.EndGetRequestStream(asynchronousResult);
StringBuilder postData = new StringBuilder();
postData.Append("--" + boundary + "\r\n");
postData.Append("Content-Disposition: form-data; name=\"body\"\r\n\r\n");
postData.Append("test 123");
postData.Append("\r\n--" + boundary + "\r\n");
byte[] byteArray = Encoding.UTF8.GetBytes(postData.ToString());
postStream.Write(byteArray, 0, postData.Length);
postStream.Close();
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private static void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
// Close the stream object
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse
response.Close();
}
からC#の例を変更した:私はエミュレータでこれを実行すると、サーバーから「{結果 『OK』}を」が、「エラー:NOTFOUND」私は私のサムスンフォーカスでそれを実行します。私はこれが文字列が電話機のデスクトップコンピュータと比較してバイト[]に変換される方法と関係していると仮定しています。
修正に関するアイデアはありますか?たぶん、これは私が答えをウェブで検索したときに出会ったことのない既知のエラーですか?
リクエストはサーバーに届きますか?あなたはデバイス上のIEからサーバーに接続できますか? –
はい、リクエストはサーバーに届きます。私はこれを知っている、私はサーバーからの応答を得ている。ただ時間切れではありません。はい、デバイスのIEでWebサービスに接続できます。 – NathanErtner
あなたのデバイス(IE経由)がサーバーに接続できない場合は、それが最初の調査ポイントになるはずです。デバイスからサーバーに接続できない場合は、コードの変更は役に立たないでしょう。 –