0

当我尝试在 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(); 


    }
4

1 回答 1

0

不支持在 wp7 上使用 NTLM 与服务器进行身份验证,它在 wp8 上受支持 wp8 上的相同代码给出结果

于 2013-07-04T10:44:46.370 回答