XML转义字符
我试图发送一个POST请求,向API框添加一些内容。规则是主体格式应该是XML(值必须是XML转义)、HTTP方法(post)、需要身份验证(是)、请求内容(内容类型:“application/XML”XML转义字符,xml,vb.net,httpwebrequest,Xml,Vb.net,Httpwebrequest,我试图发送一个POST请求,向API框添加一些内容。规则是主体格式应该是XML(值必须是XML转义)、HTTP方法(post)、需要身份验证(是)、请求内容(内容类型:“application/XML” 在循环过程中,您需要查找并编码特殊字符。大致如下: For i As Integer = 0 To searchItems.Count - (1000 - max) data = data + "<entries><entry><value
在循环过程中,您需要查找并编码特殊字符。大致如下:
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
对于i As Integer=0的searchItems.Count-(最大1000)
data=data+“”&encodeEntry(searchItems.Item(i))&&&vbNewLine
下一个
私有函数encodeEntry(ByVal条目作为字符串)作为字符串
将返回值设置为字符串=条目
'替换特殊字符
returnValue=returnValue。替换(“&”、“&;”)
returnValue=returnValue。替换(“”,“”)
returnValue=returnValue。替换(“'”,“&apos;”)
returnValue=returnValue。替换(“,”)
'返回转义字符串
返回值
端函数
不要使用+
运算符连接字符串,请使用StringBuilder
不要使用StringBuilder
来构建XML,使用XmlWriter
,它会解决编码问题
这里的方法\uu 1
的值是什么?在这种情况下,替换“
和”
应该是不必要的(因为代码不在属性中)。
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
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