Добрый день Подключаюсь к стороннему API, есть Мануал по отправке GET запроса для оформления заказа :
Не могу составить параметр items в котором не понятный мне формат массива в строке я как только не пробовал отправить данные разными способами собрать массив в том числе и в ручную к примеру:
spoiler
[{290775П29,ГАЗ,Ростов-на-Дону,14.04,1,0,0,,77068}]
[{'290775П29','ГАЗ','Ростов-на-Дону','14.04','1','0','0','','77068'}]
[{"290775П29","ГАЗ","Ростов-на-Дону",14.04,1,0,0,"",77068}]
[{"290775П29","ГАЗ","Ростов-на-Дону","14.04","1","0","0","","77068"}]
[{article='290775П29',brand='ГАЗ',supplierName='Ростов-на-Дону',costSale='14.04',quantity='1',supplierTimeMin='0',supplierTimeMax='0',comment='',GioID='77068'}]
[{article=>'290775П29',brand=>'ГАЗ',supplierName=>'Ростов-на-Дону',costSale=>'14.04',quantity=>'1',supplierTimeMin=>'0',supplierTimeMax=>'0',comment=>'',GioID=>'77068'}]
[{'article'=>'290775П29','brand'=>'ГАЗ','supplierName'=>'Ростов-на-Дону','costSale'=>'14.04','quantity'=>'1','supplierTimeMin'=>'0','supplierTimeMax'=>'0','comment'=>'','GioID'=>'77068'}]
[{'article'='290775П29','brand'='ГАЗ','supplierName'='Ростов-на-Дону','costSale'='14.04','quantity'='1','supplierTimeMin'='0','supplierTimeMax'='0','comment'='','GioID'='77068'}]
Не один из вариантов не проходит, пробовал и serialize и json даже print_r. не пойму что имели ввиду разработчики API? Естественно строка была пропущена через urlencode.
Итог API меня не понимает и не разбирает то что я отправляю.
Запрос формирую методами PHP. Так же есть такой пример :
Пример СHttpClient client = new HttpClient();
string lp = Convert.ToBase64String(Encoding.UTF8.GetBytes(login + ":" + password)).ToString();
Uri url = new Uri("https://api.xn--80aep1aarf3h.xn--p1ai/SearchService/AddOrder?items=" + HttpUtility.UrlEncode(items));
client.BaseAddress = url;
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", lp);
var response = client.GetAsync(url).Result;
Но мне он не дает ни какой полезной инфы.
Другие функции API все реализованы без непонятного массива и все просто реализованы и работают без проблем.
Может я не понимаю очевидного? Буду рад любым идеям. Спасибо.
Код$SendPart[0]['article']= $Part['WebService_Data']['Article'];
$SendPart[0]['brand']= $Part['WebService_Data']['brand'];
$SendPart[0]['SupplierName']= $Part['WebService_Data']['SupplierName'];
$SendPart[0]['CostSale']= $Part['WebService_Data']['CostSale'];
$SendPart[0]['SupplierTimeMin']= $Part['WebService_Data']['supplierTimeMin'];
$SendPart[0]['SupplierTimeMax']= $Part['WebService_Data']['supplierTimeMax'];
$SendPart[0]['Quantity']= (int)$Part['count'];
$SendPart[0]['Comment']=$Comment;
$SendPart[0]['GioID']= (int)$Part['parts_id'];
$SendUri=json_encode($SendPart);
$data = AddOrder($SendUri);
public function AddOrder($SendUri) {
$url = $this->url.'/SearchService/AddOrder?items='.urlencode($SendUri).'';
$auth = base64_encode($this->login.":".$this->pass);
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
"http"=>array(
"header"=>"Authorization: Basic $auth",
'ignore_errors' => true,
),
);
try {
$result = file_get_contents($url,false, stream_context_create($arrContextOptions));
if($result==false){
throw new Exception('Error');
} else {
//$result=json_decode($result, true);
}
}catch (Exception $e) {
$result['Error']="file_get_contents Error";
}
echo $url;
return $result;
}