2016-08-12 3 views
1

C#을 사용하여 FritzBox (WLAN 라우터)에 SOAP 요청을 보내려고합니다. 현재 서버가 WSDL 파일을 제공하지 않기 때문에 XML SOAP 요청을 직접 작성하고 있습니다.FritzBox에 SOAP 요청 보내기

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create (@"http://fritz.box:49000/igdupnp/control/WANIPConn1"); 
webRequest.Headers.Add (@"SOAP:Action"); 
webRequest.ContentType = "text/xml;charset=\"utf-8\""; 
webRequest.Accept = "text/xml"; 
webRequest.Method = "POST"; 

그러나 요청을 보낼 때 나는 WebException이 얻을 :

The remote server returned an error: (404) Not Found.

나는 그것을 가지고 확신을

내가 내 XML을 첨부 웹 요청을 작성하는 방법이다 내 URL로 뭔가를하려면 어떻게해야할지 모르겠다. FritzBox 문서 오히려 나쁜 : -/

답변

0

외부 IP

WebRequest webRequest = WebRequest.Create("http://fritz.box:49000/igdupnp/control/WANIPConn1"); 
     HttpWebRequest httpRequest = (HttpWebRequest)webRequest; 
     httpRequest.Method = "POST"; 
     httpRequest.ContentType = "text/xml; charset=utf-8"; 
     httpRequest.Headers.Add("SOAPACTION", "urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress"); 
     httpRequest.ProtocolVersion = HttpVersion.Version11; 
     httpRequest.Credentials = CredentialCache.DefaultCredentials; 
     Stream requestStream = httpRequest.GetRequestStream(); 
     //Create Stream and Complete Request    
     StreamWriter streamWriter = new StreamWriter(requestStream, Encoding.ASCII); 

     StringBuilder soapRequest = new StringBuilder(@"<?xml version=""1.0"" encoding=""utf-8""?> <s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"" s:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""> <s:Body><u:GetExternalIPAddress xmlns:u=""urn:schemas-upnp-org:service:WANIPConnection:1"" /></s:Body></s:Envelope>"); 

     streamWriter.Write(soapRequest.ToString()); 
     streamWriter.Close(); 
     //Get the Response  
     HttpWebResponse wr = (HttpWebResponse)httpRequest.GetResponse(); 
     StreamReader srd = new StreamReader(wr.GetResponseStream()); 
     string resulXmlFromWebService = srd.ReadToEnd(); 
     return resulXmlFromWebService; 
를 얻기 위해이 코드를 작업을 시도