2

我正在使用 Powerbuilder 访问 RESTFUL API。我让它工作得很好,但是我想调用 API 并包含请求标头。我需要这个的原因是因为 API 接受“Content-Type”请求标头,它可以设置为“application/xml”或“application/json”。

这是我到目前为止所做的:

inet iinet_base
n_ir ir

GetContextService( "Internet", iinet_base )
CREATE n_ir
li_rc = iinet_base.GetURL( "http://api.com/apicall", ir )
ls_result = ir.of_getResultData_String()

以上将按预期返回数据。请求必须是 GET 请求,而不是 POST。

如何向 GetURL 请求添加请求标头?

4

3 回答 3

1

最终没有使用 inet 对象,而是使用了其他东西。长话短说,我现在正在使用这样的 OleObject

lole_Send.connectToNewObject("Msxml2.DOMDocument.6.0")
lole_SrvHTTP.connectToNewObject("MSXML2.ServerXMLHTTP.6.0")
lole_SrvHTTP.Open("GET", "http://api.com/apicall", FALSE)
lole_SrvHTTP.SetRequestHeader( "Content-Type", "application/json")
lole_SrvHTTP.Send(lole_Send)
ls_message = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)

还有更多,但是对于其他试图找到答案的人来说,这是一个好的开始。

于 2013-10-10T06:36:01.560 回答
0

您应该改用允许您指定一些请求标头PostUrl()的对象的方法。inet

于 2013-10-07T09:32:01.453 回答
0

如果要添加标头,可以使用更多 SetRequestHeader

样品卷曲

curl -X GET --header '接受:应用程序/json --header '授权:asdfasdf' --header 'APIKEY: ssss'

像这样

lole_Send.connectToNewObject("Msxml2.DOMDocument.6.0")
lole_SrvHTTP.connectToNewObject("MSXML2.ServerXMLHTTP.6.0") 
lole_SrvHTTP.Open("GET", "http://api.com/apicall", FALSE)

lole_SrvHTTP.SetRequestHeader( "Content-Type", "application/json")
lole_SrvHTTP.SetRequestHeader( "Authorization", "asdfasdf' )*")
lole_SrvHTTP.SetRequestHeader( "APIKEY", "ssss")

lole_SrvHTTP.Send(lole_Send)
ls_message = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)
于 2016-09-02T04:57:51.187 回答