vbN*_*bie 2 xml vb.net httpwebrequest
我正在尝试发送POST请求以将一些内容添加到API框中.规则是正文格式应为XML(值必须是XML转义),HTTP方法(发布),要求身份验证(是),请求内容(内容类型:"application/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>
Run Code Online (Sandbox Code Playgroud)
我发送请求如下,并得到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("xxx@xxx.com", "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
Run Code Online (Sandbox Code Playgroud)
附加规则: - 最佳做法是逐步添加和删除条目列表的更改,而不是每次需要更改时删除/重新创建整个列表. - 新的条目放置在队列的顶部以进行轮询,并以LIFO方式处理.
您需要在循环期间查找并编码特殊字符.有点像:
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("&", "&")
returnValue = returnValue.Replace("""", """)
returnValue = returnValue.Replace("'", "'")
returnValue = returnValue.Replace("<", "<")
returnValue = returnValue.Replace(">", ">")
' return the escaped string
return returnValue
End Function
Run Code Online (Sandbox Code Playgroud)