2013-10-07 362 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)