![]() |
![]() |
![]() |
|
POST запрос на сайт | ☑ | ||
---|---|---|---|---|
0
Romeo53
17.06.14
✎
23:28
|
Хочу сделать POST запрос на сайт
вот пример на сайте Вот что я по инструкции пытался сделать НашЗапрос= md5(access_key=[тут мой ключ]&created=[число из даты timestamp]&method=get_account_info&secret_key=[мой секретный ключ]) ФайлЗапроса = ПолучитьИмяВременногоФайла() + ".bot"; ФайлОтвета = ПолучитьИмяВременногоФайла() + ".bot"; ХешЗапрос = ЗашифроватьMD5(НашЗапрос, СекрКлючApi); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("method", "get_account_info"); ЗаголовокHTTP.Вставить("access_key", КлючApi); ЗаголовокHTTP.Вставить("created", ЧислоИзДаты()); ЗаголовокHTTP.Вставить("Sign", ХешЗапрос); ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded"); Текст = Новый ЗаписьТекста(ФайлЗапроса, КодировкаТекста.ANSI, ""); Текст.ЗаписатьСтроку(НашЗапрос); Текст.Закрыть(); SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено); НТТР = Новый HTTPСоединение("api.salesforce.com",,,,,, SSL); НТТР.ОтправитьДляОбработки(ФайлЗапроса, "/api.php", ФайлОтвета, ЗаголовокHTTP); выдает ошибки - {"code":67,"msg":"\u79c1\u94a5\u9a8c\u8bc1\u5931\u8d25","time":1403031387} 67ой код - неправильный api ключ. хотя проверял все правильно. я в своем коде не уверен, может что не правильно написал, посмотрите пожалуйста md5 функцию отсюда взял, только "ScrptCtrl.Run("hex_hmac_md5" " параметр, т.к. HMAC MD5 использую для отправки ключа Реализация MD5 на 1С Вот сам пример на сайте ------------------------------------------------------ sign = md5(access_key=xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx&created=1386844119&method=get_account_info&secret_key=xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx) <?php function httpRequest($pUrl, $pData){ $tCh = curl_init(); if($pData){ is_array($pData) && $pData = http_build_query($pData); curl_setopt($tCh, CURLOPT_POST, true); curl_setopt($tCh, CURLOPT_POSTFIELDS, $pData); } curl_setopt($tCh, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded")); curl_setopt($tCh, CURLOPT_URL, $pUrl); curl_setopt($tCh, CURLOPT_RETURNTRANSFER, true); curl_setopt($tCh, CURLOPT_SSL_VERIFYPEER, false); $tResult = curl_exec($tCh); curl_close($tCh); return $tResult; } function createSign($pParams = array()){ $pParams['secret_key'] = 'xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx'; ksort($pParams); $tPreSign = http_build_query($pParams); $tSign = md5($tPreSign); return strtolower($tSign); } function getAccountInfo(){ $tParams = array(); $tParams['method'] = 'get_account_info'; $tParams['access_key'] = 'xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx'; $tParams['created'] = time(); $tParams['sign'] = createSign($tParams); $tResult = httpRequest('https://api.salesforce.com/api.php', $tParams); return $tResult; } try{ var_dump(getAccountInfo()); }catch (Exception $e){ echo 'error:'.$e->getMessage(); } -------------------------------------------- |
|||
1
oleg_km
18.06.14
✎
08:09
|
Если можно попробовать эксплорером, то Фиддлером смотри, что отсылает твой код, а что эксплорер.
|
|||
2
Поpyчик-4
18.06.14
✎
09:02
|
(0)(1) Неправильно сделано.
Параметры ЗаголовокHTTP.Вставить("method", "get_account_info"); ЗаголовокHTTP.Вставить("access_key", КлючApi); ЗаголовокHTTP.Вставить("created", ЧислоИзДаты()); ЗаголовокHTTP.Вставить("Sign", ХешЗапрос); надо отправлять не в заголовке, а в параметрах запроса. Многие путают назначение заголовков HTTP-запроса. |
|||
3
Поpyчик-4
18.06.14
✎
09:53
|
(0) Вот похожий пример http://forum.aeroion.ru/post4487.html#4487
|
|||
4
Romeo53
18.06.14
✎
11:51
|
в инструкции на сайте написано
Header request must be declared. Content-Type:application/x-www-form-urlencoded я так понял такой вариант не подходит ФайлОтправки.ЗаписатьСтроку("--" + Boundary); ФайлОтправки.ЗаписатьСтроку("Content-disposition: form-data; name=""submit""" + Символы.ПС); ФайлОтправки.ЗаписатьСтроку("1"); ФайлОтправки.ЗаписатьСтроку("--" + Boundary); |
|||
5
Romeo53
18.06.14
✎
12:04
|
1.Please submit transaction requests via the POST method
2.Header request must be declared. Content-Type:application/x-www-form-urlencoded 3.all requests should be converted into corresponding JSON format 4.API currently only supports https requests 5.API formats follow POST method form submission formats |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |