2010-11-11 90 views
2

我想發送一個POST請求,將一些內容添加到API框中。該規則是人體格式應該是XML(值必須是XML轉義),HTTP方法(POST),要求身份驗證(是),請求內容(內容類型:「應用程序/ XML」XML轉義字符

<entries? 
    <entry tag="some_tag"> 
    <value>XML-escaped-entry belongs here</value> 
    </entry> 
    <entry tag="some_tag"> 
    <value>XML-escaped-entry belongs here</value> 
.... 
... 

</entries> 

我發送請求如下,並得到一個400錯誤的請求錯誤它工作時,我進入了一個條目的值

For i As Integer = 0 To searchItems.Count - (1000 - max) 
       data = data + "<entries><entry><value>" & searchItems.Item(i) & "</value></entry></entries>" & vbNewLine 
      Next 
      If uri.Scheme = uri.UriSchemeHttps Then 
       Dim request As HttpWebRequest = HttpWebRequest.Create(uri) 
       request.Method = method__1 
       request.ContentLength = data.Length 
       request.ContentType = "application/xml" 
       request.Credentials = New System.Net.NetworkCredential("[email protected]", "xxxxxx") 
       Dim writer As New StreamWriter(request.GetRequestStream) 
       writer.Write(data) 
       writer.Close() 
       Dim oResponse As HttpWebResponse = request.GetResponse() 
       Dim reader As New StreamReader(oResponse.GetResponseStream()) 
       Dim tmp As String = reader.ReadToEnd() 
       oResponse.Close() 
      End If 

附加規則:。 - 最佳的做法是逐步添加和刪除更改您的參賽名單,而不是每次需要更改時刪除/重新創建整個列表 - 新條目放置在隊列頂部用於投票並以LIFO方式處理。

+0

'method__1'在這裏的價值是什麼? – Michael 2010-11-11 18:01:03

回答

5

您需要在循環中查找並編碼特殊字符。沿着線的東西:

For i As Integer = 0 To searchItems.Count - (1000 - max) 
      data = data + "<entries><entry><value>" & encodeEntry(searchItems.Item(i)) & "</value></entry></entries>" & vbNewLine 
Next 

Private Function encodeEntry(ByVal entry As String) As String 
    Dim returnValue As String = entry 

    ' Replace the special characters 
    returnValue = returnValue.Replace("&", "&amp;") 
    returnValue = returnValue.Replace("""", "&quot;") 
    returnValue = returnValue.Replace("'", "&apos;") 
    returnValue = returnValue.Replace("<", "&lt;") 
    returnValue = returnValue.Replace(">", "&gt;") 

    ' return the escaped string 
    return returnValue 
End Function 
+0

謝謝,讓我試試 – vbNewbie 2010-11-11 18:05:40

+0

在這種情況下替換''''和'''應該是不必要的(因爲代碼不在屬性中)。 – 2010-11-11 18:45:37

3
  1. 不要使用+運算符連接字符串,使用StringBuilder
  2. 請勿使用StringBuilder構建XML,請使用XmlWriter,它會照顧您的編碼問題。