В основном у меня есть веб-сервис для отдыха, который размещен на компьютере самостоятельно, и я хочу загрузить изображение с телефона Windows 7. Многое для меня в новинку, поэтому я учился по ходу дела. Моя проблема в том, что я не могу загрузить изображение в веб-сервис.
Ниже приведен код, который я использую.
Я тестирую с подключением Wi-Fi, и он работает.
Я использую Fiddler и вижу запросы, поступающие на телефон и с телефона / pc
используя эмулятор, я могу заставить это работать (я получаю код 200 и могу записать образ на диск)
Когда я пытаюсь отправить сообщение с фактического устройства, я получаю обратно код ответа 400.
Любая помощь, которую я могу получить, была бы великолепна. Я крутил свои колеса, пытаясь устранить эту ошибку.
//webserice code
[ServiceContract]
public interface ItestService
{
[OperationContract, WebInvoke(Method = "POST", UriTemplate = "PostTest/{targetID}")]
string PostTest(string targetID, Stream image);
}
//from service def
public string PostTest(string targetID, System.IO.Stream image)
{
string id = WriteImageToDisk(image, targetID);
return id;
}
//phone code
private void SendImage1()
{
string address = ServiceURI + "/PostTest";
Uri baseAddress = new Uri(address);
var req = HttpWebRequest.Create(baseAddress) as HttpWebRequest;
req.Method = "POST";
req.ContentType = "image/jpeg";
req.BeginGetRequestStream(SendImagePost_Callback, req);
}
private void SendImagePost_Callback(IAsyncResult result)
{
try
{
var req = result.AsyncState as HttpWebRequest;
using (var strm = req.EndGetRequestStream(result))
{
var bytesToWrite = RawContent();
strm.Write(bytesToWrite, 0, bytesToWrite.Length);
strm.Flush();
}
req.BeginGetResponse(SendImageResponce_Callback, req);
}
catch (Exception ex)
{
DisplayMessage(this.txtError, ex.Message);
}
}
private void SendImageResponce_Callback(IAsyncResult result)
{
try
{
var req = result.AsyncState as HttpWebRequest;
var strm = resp.GetResponseStream();
var reader = new StreamReader(strm);
DataContractSerializer ser = new DataContractSerializer(typeof(string));
string id = ser.ReadObject(strm).ToString();
DisplayMessage(this.txtAction, id);
}
catch (Exception ex)
{
DisplayMessage(this.txtError, ex.Message);
}
}