2013-10-07 3 views
2

Я получаю доступ к RESTFUL API с помощью Powerbuilder. У меня он работает отлично, но я бы назвал 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

Вы должны использовать метод PostUrl() объекта inet, который позволяет указать некоторые заголовки запросов.

+0

Я забыл упомянуть, что API принимает только запросы GET, а не запросы POST. Я отредактировал свой вопрос, чтобы отразить это. – Melon

0

Если вы хотите добавить заголовок, который вы можете использовать более SetRequestHeader

Образец локон

локон -X GET --header «Accept: приложения/JSON --header 'Авторизация: asdfasdf' - -header 'APIKEY: ГСС'

как это

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) 
Смежные вопросы