[英]Setting REQUEST header Http Client vb.net
考虑下面的VB代码:
Public Async Function someFunction(ByVal url As String, Optional ByVal methodPost As Boolean = False, Optional ByVal postContent As HttpContent = Nothing) As Threading.Tasks.Task(Of String)
Using client = New HttpClient
client.DefaultRequestHeaders.Authorization = makeAuthenticationHeader()
If methodPost Then
client.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json"))
Dim Response = Await client.PostAsync(url, postContent)
Dim content As String = Await Response.Content.ReadAsStringAsync
Return content
Else
Return Await client.GetStringAsync(url)
End If
End Using
End Function
我想将请求内容类型设置为application/json
,并将响应内容类型设置为application/json
。
如果添加以下代码行: client.DefaultRequestHeaders.Add("content-type", "application/json")
则系统将引发异常的Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.
Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.
。
我在Google各处搜索了一种将请求标头设置为JSON的方法。 使用提琴手(在服务器上),我可以看到请求以纯文本/文本形式发送。
POST **URL REMOVED FOR SAFETY REASONS** HTTP/1.1
Authorization: Basic **HASHED AUTH DETAILS - REMOVED FOR SAFETY REASONS**
Accept: application/json
Content-Type: text/plain; charset=utf-8
Host: **HOST REMOVED FOR SAFETY REASONS**
Content-Length: 1532
Expect: 100-continue
Connection: Keep-Alive
Content-Type: text/plain; charset=utf-8
Content-Type: text/plain; charset=utf-8
这是我遇到的问题。 由于请求的主体是JSON,因此需要将其设置为JSON的内容类型。 如何在vb.net代码中将此content-type
设置为JSON。
我找到了解决方案,我不知道这是正确的解决方案还是有更好的解决方案。
基本上,您需要在要发送的实际内容上而不是在HTTP客户端上设置content-type
标头。
因此,基本上在代码中添加content.Headers.ContentType = New MediaTypeWithQualityHeaderValue("application/json")
,也应该将REQUEST的内容类型设置为JSON。
Public Async Function someDifferentFunction() As Threading.Tasks.Task(Of String)
Dim url As String = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Dim content As HttpContent = New StringContent(txtRequestBody.Text)
content.Headers.ContentType = New MediaTypeWithQualityHeaderValue("application/json")
Return Await someFunction(url, True, content)
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.