我正在使用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请求添加请求标头?
答案 0 :(得分: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)
还有更多内容,但对于试图找到答案的其他人来说,这是一个良好的开端。
答案 1 :(得分:0)
您应该使用PostUrl()
对象的inet
方法来指定一些请求标头。
答案 2 :(得分:0)
如果您想添加标题,可以使用更多SetRequestHeader
样本卷曲
像这样curl -X GET --header'Accept:application / 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)