2014-10-12 7 views
0

XML 웹 서비스를 사용하려고합니다. 이 서비스는 switchvox라는 asterix 기반 PBX입니다. 각 요청은 응답 형식으로 XML이 반환되는 XML 형식이어야합니다. 내 코드는 다음과 같습니다, 나는 단지 내 요청이 비어 있다고 말하는 오류를 반환하는 API를 얻을 수 있습니다.XML 웹 서비스 API를 사용 중입니다.

Dim xml As String 
xml = "" 
xml = xml & " <request method=""switchvox.users.extensions.getInfo"">" 
xml = xml & "  <parameters>" 
xml = xml & "  <extensions>" 
xml = xml & "   <extension>104</extension>" 
xml = xml & "   </extensions>" 
xml = xml & "  </parameters>" 
xml = xml & " </request>" 
Dim url As String = "https://pbx/xml" 
Dim webRequest__1 As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 
webRequest__1.Method = "POST" 
webRequest__1.Credentials = New NetworkCredential("user", "pass") 
webRequest__1.ContentType = "text/xml" 
webRequest__1.ContentLength = xml.Length 
Using requestWriter2 As New StreamWriter(webRequest__1.GetRequestStream()) 
    requestWriter2.Write(xml) 
End Using 
Dim resp As HttpWebResponse = DirectCast(webRequest__1.GetResponse(), HttpWebResponse) 
Dim responseData As String = String.Empty 
Using responseReader As New StreamReader(webRequest__1.GetResponse().GetResponseStream()) 
    responseData = responseReader.ReadToEnd() 
End Using 
+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

수정 해 주셔서 감사합니다. 실수로 인해 죄송합니다. – DDulla

답변

1

XML을 생성하기 위해 문자열 조작 (연결 포함)을 사용하지 마십시오. 항상 LINQ to XML과 같은 XML API를 사용하십시오. VB.NET을 사용하면 XML 리터럴 기능을 사용하여 XML을 쉽고 올바르게 작성할 수 있다는 점에서 운이 좋습니다. 다음과 같이 시도하십시오 :

Public Function GetInfo() As XElement 
    Dim xml As XElement = <request method="switchvox.users.extensions.getInfo"> 
           <parameters> 
            <extensions> 
             <extension>104</extension> 
            </extensions> 
           </parameters> 
          </request> 

    Const url As String = "https://pbx/xml" 
    Dim webRequest__1 As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 
    webRequest__1.Method = "POST" 
    webRequest__1.Credentials = New NetworkCredential("user", "pass") 
    webRequest__1.ContentType = "text/xml" 
    webRequest__1.ContentLength = xml.ToString().Length 
    Using requestWriter2 As New StreamWriter(webRequest__1.GetRequestStream()) 
     requestWriter2.Write(xml.ToString()) 
    End Using 
    Using resp As HttpWebResponse = DirectCast(webRequest__1.GetResponse(), HttpWebResponse) 
     Using responseStream = resp.GetResponseStream() 
      Return XElement.Load(responseStream) 
     End Using 
    End Using 
End Function 
+0

해결책 감사합니다. 귀하의 코드를 수정했지만 데이터를 올바르게 파싱하는 데 어려움을 겪고 있습니다. 올바른 방향으로 나를 가리킬 수 있습니까? – DDulla

+0

구문 분석과 관련하여 별도의 질문을하십시오. –