2011-01-19 2 views
0

기본적으로 PC에서 자체 호스팅되는 나머지 웹 서비스가 있으며 Windows 7 휴대 전화에서 이미지를 업로드하고 싶습니다. 이것의 많은 것은 나에게 새로운 것이므로 나는 내가가는 동안 배웠다. 내 문제는 웹 서비스에 이미지를 업로드 할 수 없다는 것입니다.
아래 코드는 제가 사용하고있는 코드입니다.Windows Phone 7에 대한 도움이 필요합니다. webservice에 이미지 업로드

Wi-Fi 연결로 테스트 중이며 작동 중입니다. 내가 피들러를 사용하고 난 요청이 내가

을 일종의 (내가 200 코드 얻고 디스크에 이미지를 기록 할 수 있습니다)이 작업을 얻을 수있는 에뮬레이터를 사용하여 및 전화/PC

에서 진행 볼 수 있습니다

실제 장치로 게시하려고하면 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); 
    } 
} 
+0

안녕하세요, 그것이 작동/나던 때 조건을 명확히 할 수 있습니까? 잠재적으로 동일한 조건의 기기가 아닌 Wi-Fi에서 작동한다고하셨습니다. –

+0

답장을 보내 주셔서 감사합니다. 응용 프로그램이 에뮬레이터에서 테스트되면 모든 것이 잘 동작합니다. GET 통화를하고 전화에서 이미지를 POST하여 서비스에 게시 할 수 있습니다. 그러나 장치에 응용 프로그램을 배포하고 테스트 할 때 이미지 게시물이 작동하지 않습니다. 기기에서 앱 테스트하기 내가 연결되어 있는지 확인할 수 있습니다. 서비스에 대한 모든 GET 호출을 잘 처리 할 수 ​​있지만 장치에서 서비스로 이미지를 POST하려고하면 실패합니다. – user503926

답변

0

해결할 연결 문제가있는 것 같습니다. 아마도 IP로 로컬 서비스에 액세스하고 방화벽 가로 채기가 없는지 확인하십시오.

+0

제 테스트 결과에 따르면 연결 문제가 없습니다. 필자는 방화벽을 설치하거나 설치하지 않고 테스트했습니다. 전화 응용 프로그램은 큰 이미지 파일을 가져 오는 것을 포함하여 서비스에 대한 여러 "GET"호출을합니다. 나는 큰 문자 메시지를 보내고 이것이 잘 작동하는 POST 호출입니다. 내가 가지고있는 유일한 문제는 전화 장치에서 이미지를 POST하려고 할 때입니다. – user503926

관련 문제