无法在 REST 中设置 http 标头的内容类型



无论我设置什么,以下请求始终采用默认内容类型。我设置为应用程序/xml,但它仍然作为应用程序/json。但是,当我通过邮递员调用服务时,此问题不存在。

Set objHTTPRequest=##class(%Net.HttpRequest).%New()
Set objHTTPResponse=##class(%Net.HttpResponse).%New()
Do objHTTPRequest.SetHeader("Authorization", "username:password")
Do objHTTPRequest.SetHeader("Content-Type", "application/xml")
Do objHTTPRequest.Send("GET","url")
Set Op=objHTTPRequest.HttpResponse.Data.Read()

zw objHTTPRequest -> No Content-Type Set

您是如何检查默认内容类型的?
也许你错过了一些关于HTTP如何工作的东西?
当您通过POSTPUT请求发送某些数据时,可以为此数据设置内容类型。如果要以所需的格式从服务器检索一些数据,可以设置标头Accept,但是当您设置此标头时,并不意味着您真的以要求的格式获取此数据,它仅取决于此特定服务器的实现。举一些例子。

set ht=##class(%Net.HttpRequest).%New()
set ht.Server="example.org"
set ht.Port=80
set ht.Username="username"
set ht.Password="password"
#; we a going to send some xml
do ht.ContentBody.Write("<root></root>")
#; for this data we can set ContentType
set ht.ContentType="application/xml"
#; then we POST this data, where 1 it is just test flag, for debug
set sc=ht.Post("/somepath", 1)
#; As a result you can see that Content-Type has our value 
POST /somepath HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; Cache;)
Host: example.org
Accept-Encoding: gzip
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Length: 13
Content-Type: application/xml
<root></root>

相关内容

  • 没有找到相关文章

最新更新