Я пытаюсь выполнить базовый http POST для веб-службы из моего приложения для Windows Phone 7. Я знаю, что веб-сервис работает нормально, потому что я использую его для трех других мобильных платформ.
Я изменил пример C # с 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();
}
Я получаю "{result: 'ok'}" с сервера, когда я запускаю это в эмуляторе, но "error: NotFound", когда я запускаю его на своем Samsung Focus. Я предполагаю, что это связано с тем, как строка преобразуется в байт [] в телефоне по сравнению с настольным компьютером.
Есть идеи по исправлению? Может быть, это известная ошибка, с которой я никогда не сталкивался при поиске ответа в Интернете?