2013-10-07 402 views
2

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

这是我迄今所做的:

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请求添加请求标头?

回答

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) 

有更多的东西,但是这是一个好的开始为别人试图寻找一个答案。

0

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

+0

我忘了提及API只接受GET请求,而不接受POST请求。我编辑了我的问题来反映这一点。 – Melon

0

如果您要添加的头部,你可以使用更多的SetRequestHeader

样品卷曲

卷曲-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)