2014-12-11 3 views
0

Как я прошел через примеры, я наткнулся только асинхронный HTTP веб-запрос, имеющих методы обратного вызова, как: -Http POST в WP8

private void getList(string restApiPath, Dictionary<string, string> output, Type type, string label) 
    { 

     webRequest = (HttpWebRequest)WebRequest.Create(restApiPath); 
     path = restApiPath; 
     labelValue = label; 
     webRequest.Method = "POST"; 

     webRequest.ContentType = Globals.POST_CONTENT_TYPE; 
     webRequest.Headers["st"] = MPFPConstants.serviceType; 

     webRequest.BeginGetRequestStream(result => 
     { 
      HttpWebRequest request = (HttpWebRequest)result.AsyncState; 
      // End the stream request operation 
      Stream postStream = request.EndGetRequestStream(result); 

      // Create the post data 
      string reqData = Utils.getStringFromList(output); 


      string encode = RESTApi.encodeForTokenRequest(reqData); 

      byte[] byteArray = Encoding.UTF8.GetBytes(encode); 

      postStream.Write(byteArray, 0, byteArray.Length); 
      postStream.Close(); 


      request.BeginGetResponse(new AsyncCallback(GetResponseCallbackForSpecificConditions), request); 

     }, webRequest); 
    } 

    private void GetResponseCallbackForSpecificConditions(IAsyncResult ar) 
    { 
     //code 
    } 

Просьба предложить мне, если мы можем сделать синхронную HttpWebRequest для WP8 ?

ответ

0

Почему бы не попробовать это, она работает в приложении Desktop:

   using (Stream TextRequestStream = UsedWebRequest.GetRequestStream()) 
       { 
        TextRequestStream.Write(ByteArray, 0, ByteArray.Length); 
        TextRequestStream.Flush(); 
       }    
       HttpWebResponse TokenWebResponse = (HttpWebResponse)UsedWebRequest.GetResponse(); 
       Stream ResponseStream = TokenWebResponse.GetResponseStream(); 
       StreamReader ResponseStreamReader = new StreamReader(ResponseStream); 
       string Response = ResponseStreamReader.ReadToEnd(); 
       ResponseStreamReader.Close(); 
       ResponseStream.Close(); 
+0

Там нет метода BeginResponse() .so, webRequest.BeginResponse() dosen't работы и должны использовать webRequest.BeginGetResponse() – user3128497

0

Почему бы не попробовать restsharp?

образец POST код выглядит,

RestClient _authClient = new RestClient("https://sample.com/account/login"); 
RestRequest _credentials = new RestRequest(Method.POST); 
_credentials.AddCookie(_cookie[0].Name, _cookie[0].Value); 
_credentials.AddParameter("userLogin", _username, ParameterType.GetOrPost); 
_credentials.AddParameter("userPassword", _password, ParameterType.GetOrPost); 
_credentials.AddParameter("submit", "", ParameterType.GetOrPost); 
RestResponse _credentialResponse = (RestResponse)_authClient.Execute(_credentials); 
Console.WriteLine("Authentication phase Uri : " + _credentialResponse.ResponseUri);