2017-09-22 1 views
0

나는 을 통해 업로드 된 XML 문자열을 내 주문서를 제출할 수 있도록 노력했지만 어떤 시도를하든 간단히 작동하지 않습니다.PHP와 Curl로 제출하기

내 URL :

$url = "http://example.com/SubmitOrder?apiKey=ABC123&clientID=MYId&orderXml=".$xml; 

$xml 내 XML 정보가 이미 사전 형식이다.

나는 다음 내 컬 섹션에이를 넣어 :

$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL   => $url 
)); 
$resp = curl_exec($curl); 

$xml1=simplexml_load_string($resp) or die("Error: Cannot create object"); 

print_r($xml1); 
echo "Submitted"; 

내가 얻을 응답은 "오류 : 개체를 만들 수 없습니다"나는 내 세부 정보가 제출되지 않았 음을 알 수있다.

어디로 가고 있습니까?

감사합니다.

+0

일시적으로 간단한 디버그 라인을 추가하여 요청에서 실제로 되돌아 오는 것을 확인 하시겠습니까? 'curl_exec()'호출 후에'var_dump ($ resp);'? –

+0

예, 제가 거기에 있었지만 빈 뒤로오고있었습니다. 이 부분을 더 자세히 보았고 URL과 API 키의 인코딩에 이르기까지했습니다. API 키에 특수 문자가있어 인코딩 할 때 제대로 인코딩되지 않아 인증되지 않습니다. 간단한 일!!! 모두에게 도움이되는 모든 것을 감사하십시오! – Wilkesy

답변

0

이 코드 예제에서는 응답 데이터를 확인하고 데이터를 생성 할 수 있습니다.

<?php 
$url = 'https://www.w3schools.com/xml/note.xml'; 

$resp = file_get_contents($url); 

if (resp) { 
    $string = simplexml_load_string($resp); 
    var_dump($movies); 
} 

그러나이 방법으로 데이터를 얻으려면이 방법을 사용하십시오.

<?php 

$html_brand = 'https://www.w3schools.com/xml/note.xml'; 
$ch = curl_init(); 

$options = array(
    CURLOPT_URL   => $html_brand, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HEADER   => true, 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_ENCODING  => "", 
    CURLOPT_AUTOREFERER => true, 
    CURLOPT_CONNECTTIMEOUT => 120, 
    CURLOPT_TIMEOUT  => 120, 
    CURLOPT_MAXREDIRS  => 10, 
); 
curl_setopt_array($ch, $options); 
$response = curl_exec($ch); 
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) { 
    case 200: # OK 
     break; 
    default: 
     echo 'Status code HTTP: ', $http_code, "\n"; 
} 

var_dump($response); 
curl_close($ch); 
die(); 

데이터를 확인하십시오. 그리고 응답 상태 코드를 확인하십시오.