2013-05-22 29 views
0

当我尝试使用wp7中的NTLM向服务器进行身份验证时,它给了我一个错误“远程服务器返回了一个错误:NotFound。”wp7中的NTLM身份验证实施错误

private void callWebservice(object sender, RoutedEventArgs e) 
{ 
    NetworkCredential credentials = new NetworkCredential(userName, Password, domain); 
    HttpWebRequest request = CreateWebRequest(url, credentials); 
    XDocument soapEnvelope = CreateSoapEnvelope(soapEnvelope); 
    InsertSoapEnvelopeIntoWebRequest(soapEnvelope, request); 
} 
private static HttpWebRequest CreateWebRequest(string url, NetworkCredential credentials) 
     { 
      string action = link;// my action link 
      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); 
      req.Credentials = credentials; 
      req.Headers["SOAPAction"] = action; 
      req.ContentType = "text/xml;charset=\"utf-8\""; 
      req.Accept = "text/xml"; 
      req.Method = "POST"; 
      return req; 
     } 

    private static XDocument CreateSoapEnvelope(string content) 
    { 
     XDocument soapEnvelopeXml = XDocument.Parse(content); 
     return soapEnvelopeXml; 
    } 

    private static void InsertSoapEnvelopeIntoWebRequest(XDocument soapEnvelopeXml,       HttpWebRequest webRequest) 
    { 
     webRequest.BeginGetRequestStream((IAsyncResult asynchronousResult) => 
     { 
      HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState; 
      Stream postStream = request.EndGetRequestStream(asynchronousResult); 
      soapEnvelopeXml.Save(postStream); 
      postStream.Close(); 

      request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request); 
     }, webRequest); 
    } 

    private static void GetResponseCallback(IAsyncResult asynchronousResult) 
    { 
        HttpWebRequest request =      (HttpWebRequest)asynchronousResult.AsyncState; 
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult); 
        Stream streamResponse = response.GetResponseStream(); 
        StreamReader streamRead = new StreamReader(streamResponse); 
        string responseString = streamRead.ReadToEnd(); 

        //do whatever with the response 
        MessageBox.Show(responseString); 

        streamResponse.Close(); 
        streamRead.Close(); 

        response.Close(); 


    } 

回答

0

使用支持WP7 insn't NTLM服务器进行身份验证,它支持WP8 相同的代码上WP8它给出的结果