2016-12-20 3 views
1

응답 얻기 위해 내가 SOAP의 웹 서비스에서 응답을 얻기 위해 노력하고있어,하지만 난 WebException이 오류 (500)HttpWebRequest를 반환 오류 500 때하는 GetResponse()

이 내 수업에 빠지지 해요 :

public static string getResponse() 
{ 
    StringBuilder xml = new StringBuilder(); 
    //xml.Append(@"<?xml version=""1.0"" encoding=""utf-8""?>"); 
    xml.Append(@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:br=""http://www.totvs.com.br/br/"" >").Replace(@"\", ""); 
    xml.Append("<soap:Envelope/>"); 
    xml.Append("<soapenv:Body>"); 
    xml.Append("<br:RealizarConsultaSQLAuth>"); 
    xml.Append("<br:codSentenca>GLOBAL_054</br:codSentenca>"); 
    xml.Append("<br:codColigada>0</br:codColigada>"); 
    xml.Append("<br:codAplicacao>V</br:codAplicacao>"); 
    xml.Append("<br:Usuario>xxxx</br:Usuario>"); 
    xml.Append("<br:Senha>xxxx</br:Senha>"); 
    xml.Append("<br:parameters>codcoligada=1;codsistema=V;codusuario=mestre</br:parameters>"); 
    xml.Append("</br:RealizarConsultaSQLAuth>"); 
    xml.Append("</soapenv:Body>"); 
    xml.Append("</soapenv:Envelope>"); 
    string s = getUKMailData(xml.ToString(), "http://xxx.xxxx.com.br:99/xxxx/wsConsultaSQL.asmx"); 
    return s; 
} 

public static string getUKMailData(string xml, string address) 
{ 
    string result = ""; 
    HttpWebRequest request = CreateWebRequest(address); 
    XmlDocument soapEnvelopeXml = new XmlDocument(); 
    string teste = xml.Replace(@"\", ""); 
    soapEnvelopeXml.LoadXml(teste); 
    try 
    { 
     using (Stream stream = request.GetRequestStream()) 
     { 
      soapEnvelopeXml.Save(stream); 
     } 
     using (WebResponse response = request.GetResponse()) 
     { 
      using (StreamReader rd = new StreamReader(response.GetResponseStream())) 
      { 
       string soapResult = rd.ReadToEnd(); 
       result = soapResult; 
      } 
     } 
    } 
    catch (WebException wex) 
    { 
     var pageContent = new StreamReader(wex.Response.GetResponseStream()).ReadToEnd(); 
    } 
    return result; 
} 

public static HttpWebRequest CreateWebRequest(string url) 
{ 
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 
    webRequest.Headers.Add("SOAP:Action"); 
    webRequest.Headers.Add("username", "xxx"); 
    webRequest.Headers.Add("password", "xxx"); 
    // webRequest.ContentType = "text/xml;charset=\"utf-8\""; 
    webRequest.Accept = "text/xml"; 
    webRequest.Method = "POST"; 
    webRequest.PreAuthenticate = true; 
    webRequest.Credentials = CredentialCache.DefaultCredentials; 
    return webRequest; 
} 

누구든지 나를 도울 수 있습니까? 불행히도 저를 도와주지 못했던 일련의 기사를 이미 읽었습니다. 고마워요!

+0

오류 500은 서버가 요청을 어떤 식 으로든 처리하는 중 오류가 발생했음을 의미합니다. 잘 설계된 API는 추가 코드 및 응답 메시지에 어떤 일이 발생했는지 나타냅니다. 예를 들어'500.13'은 웹 서버가 사용 중임을 나타냅니다. 응답 내용을 보면 'Usuario'값이 유효하지 않습니다 '와 같은 메시지가 포함되어있을 수 있습니다. 이 코드를 읽는 것만으로는 무엇이 잘못되었는지 추측 할 수 없을 것입니다. – Equalsk

답변

0

귀하의 요청은 사실 일 수 있지만 서버 측은 귀하의 데이터 처리 방법을 모릅니다. 어쩌면 오류가 발생한 매개 변수 일 수 있습니다. 서버 쪽 끝을 확인하십시오.