2009-11-19 1 views
0

질문하기 전에 스택 오버플로에 대해 모두에게 감사드립니다. 나는 모두가 얼마나 도움이되는지 그리고 혼란 스러울 때 질문을하는 것에서 지난 몇 년 동안 배웠던 것에 얼마나 놀랐다.SOAP 및 PHP를 사용하여 API에 데이터를 제출하는 것에 대한 기본적인 질문

나는 사람이 API에 recordSale 기능을 사용하기 위해 노력하고있어 내 작품은, 그것은 판매 (따라서 이름)을 기록하는 방법으로 사업을 수행합니다

URL : https://secure.directtrack.com/api/soap.php# WSDL : https://secure.directtrack.com/api/soap.php?wsdl

이름 : recordSale 바인딩 : 엔드 포인트를 DirectTrackWebServicesBinding : http://secure.directtrack.com/api/soap.php은이 SOAPAction : http://secure.directtrack.com/api/soap.php/recordSale 스타일 : RPC 입력 : 사용 : 이름을 인코딩 속도 : http://soapinterop.org//는 인코딩 스타일 : http://schemas.xmlsoap.org/soap/encoding/ 메시지 : recordSaleRequest 부품 : 클라이언트 : XSD : 문자열 비밀번호 : XSD : 문자열 ORDER_ID : XSD : 문자열 sale_amount : XSD : 더블 CAMPAIGN_ID : XSD :

출력 값 int : 사용 : 인코딩 네임 스페이스 : http://soapinterop.org//는 인코딩 스타일 : http://schemas.xmlsoap.org/soap/encoding/ 메시지 : recordSaleResponse 부품 : 반환 : XSD는 :

0을 int로

네임 스페이스 : http://soapinterop.org// 운송 :

http://schemas.xmlsoap.org/soap/http 그래서 나는이의 PHP를 설정하려고하고 내가 쓴 :

$client2 = new SoapClient("http://secure.directtrack.com/api/soap.php?wsdl", array('trace'=> true)); 
$results2 = $client2->recordSale(array(
             "client" => 'my work's client #', 
             "password" => "password", 
             "order_id" => "2", 
             "sale_amount" => "1000", 
             "campaign_id" => "16", 
             "affiliate_code" => "CD35", 
             "date" => "2009-11-17", 
             "sale_status" => "", 
             "optional_info" => "fsq2", 
             "misc" => "9", 
             "record_lead" => "1")); 
echo "<pre>"; 
     print_r($results2); 
echo "</pre>"; 

가 인쇄됩니다 반환 값은 숫자 "1"입니다. 문제는 암호를 변경하거나 필수 입력란을 생략하면이 "1"이 변경되지 않는다는 것입니다. 나는 이것에 대해 완전히 잘못된 방향으로 가고 있는가? 둘째

"my work's client #" 

, 당신은 아마 디버깅 도구 (나는 이클립스 PHP를 사용하여 사용해야합니다

+0

당신은 이것에 대한 답변을 얻었고 C# coding.can을 알고 있다면 pls는 C# .bcoz에서이 해결책을 제공합니다. 동일한 url.thanx에 대해 동일한 문제에 직면했습니다. – user1562231

+0

유언장에 클라이언트의 가치를 알려주십시오. pls 당신은 atleast.and 비밀 번호는 제휴사 로그인의 알 수 있습니다? – user1562231

답변

0

코드에 디버깅 문을 추가하여 의 내용을 확인하십시오.?

$client2 = new SoapClient("http://secure.directtrack.com/api/soap.php?wsdl", array(
    'trace'=> true 
)); 
$results2 = $client2->recordSale(array(
    "client" => // ... 
)); 
echo "<pre>"; 
var_dump($client2-> __getLastRequestHeaders()); 
var_dump($client2-> __getLastRequest()); 
var_dump($client2-> __getLastResponseHeaders()); 
var_dump($client2-> __getLastResponse()); 
var_dump($results2); 
echo "</pre>"; 

이렇게하면 생성되는 SOAP 요청과 서버에서 반환되는 SOAP 응답에 대한 통찰력을 얻을 수 있습니다.

+0

이것에 대한 답변을 얻었다면 이걸로 나를 도울 수 있겠습니까? 나는 직접 추적과 같은 문제가 있습니다. 나는 500 (내부 서버 오류)를 얻고 있습니다. 내 비누 전화가 잘 작동하고 있습니다, 나는 내 웹 서비스로 테스트를 마쳤습니다. 내 매개 변수 값이 잘못되었다고 생각해. 클라이언트의 가치는 어떨까요? 비밀번호는 제휴 파트너 로그인 비밀번호의 b입니까? – user1562231

1

그것은 당신이해야이

'my work's client #' 

에 작은 따옴표를 ... 가지고있는 것처럼 보인다 디버깅하지만 넷빈을 포함하여 여러 가지가 있습니다.) 디버거로 더 많은 정보를 볼 수 있습니다. 당신은 추적이 켜져이 있기 때문에 ...

$lastRequest = $client2->__getLastRequest(); 
$lastResponse = $client2->__getLastResponse(); 

:

마지막으로, 당신은을 통해 요청과 응답의 실제 XML을 볼 수 있습니다.

+0

오 작은 따옴표로 내 작품의 로그인과 패스워드를 변경하여 여기에 게시 할 수 있습니다. 당신의 도움을 주셔서 감사합니다. –

관련 문제