Нужна помощь с загрузкой изображений Windows Phone 7 на веб-сервис - PullRequest
0 голосов
/ 19 января 2011

В основном у меня есть веб-сервис для отдыха, который размещен на компьютере самостоятельно, и я хочу загрузить изображение с телефона 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);
    }
 }

1 Ответ

0 голосов
/ 19 января 2011

Похоже, вам нужно решить проблему с подключением. Возможно, попробуйте получить доступ к вашей локальной службе по IP и убедитесь, что нет перехвата брандмауэром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...