2012-03-21 2 views
1

친애하는 stackoverflow 커뮤니티, 현재 PHP로 기사/고객/청구 소프트웨어를 코딩하고 있으며 이것이 내 파트너에게 테스트하기 전에 마지막 단계입니다.eBay PHP HTTP POST 요청?

저는 지금 정말로 당황하고 있습니다. 우리는 우리의 기사를 eBay에 자동으로 업로드하려고합니다. 파일 교환 프로그램을위한 CSV 파일의 생성은 잘 작동하고, 수동 업로드도 가능하며 기사가 나열됩니다.

이제 소프트웨어가 업로드를 자체적으로 수행하기를 원합니다. 우리는 이베이 파일 교환 가이드 herehere을 참조합니다.

이 내 현재 코드 :

$SOCKETPROC = fsockopen('bulksell.ebay.de', 80, $errno, $errstr, 4); 

fputs($SOCKETPROC, "POST https://bulksell.ebay.de/ws/eBayISAPI.dll?FileExchangeUploadForm HTTP/1.0\r\n"); 
fputs($SOCKETPROC, "Connection: Keep Alive\r\n"); 
fputs($SOCKETPROC, "User-Agent: App v1.0\r\n"); 
fputs($SOCKETPROC, "Host: https://bulksell.ebay.de/ws/eBayISAPI.dll?FileExchangeUpload\r\n"); 
fputs($SOCKETPROC, "Content-Type: multipart/form-data; boundary=THIS_STRING_SEPARATES\r\n"); 
fputs($SOCKETPROC, "Content-Length: " . filesize('export/ebay/items-' . date('Y-m-d') . '.csv') + filesize('export/ebay/token') . "\r\n"); 
fputs($SOCKETPROC, "--THIS_STRING_SEPARATES\r\n"); 

fputs($SOCKETPROC, "Content-Disposition: form-data; name=\"token\"\r\n"); 
fputs($SOCKETPROC, file_get_contents('export/ebay/token')); 

fputs($SOCKETPROC, "\r\n--THIS_STRING_SEPARATES\r\n"); 

fputs($SOCKETPROC, "Content-Disposition: form-data; name=\"file\"; filename=\"items-" . date('Y-m-d') . ".csv\"\r\n"); 
fputs($SOCKETPROC, "Content-Type: text/csv\r\n\r\n"); 
fputs($SOCKETPROC, file_get_contents('export/ebay/items-' . date('Y-m-d') . '.csv')); 

fputs($SOCKETPROC, "\r\n--THIS_STRING_SEPARATES\r\n"); 
fputs($SOCKETPROC, "Connection: Close\r\n\r\n"); // Not sure if this line is relevant 

$RESULT = fgets($SOCKETPROC); 
fclose($SOCKETPROC); 

그러나 파일을 바로 업로드 된 파일의 이베이 목록에 표시되지 않습니다. https://http://으로 변경하고 fgets($SOCKETPROC);으로 결과를 확인하면 HTTP/1.1 200 OK이 표시됩니다. 그렇지 않으면 반응이 없습니다.

아무도 나를 도와 줄 수 있다면 매우 행복 할 것입니다. 결국 파일 교환 프로그램에 대한 경험이 있습니다. 모든 종류의 도움을 확실히받습니다!

미리 질문 해 주셔서 감사합니다.

참고 : .de는 의도적으로 사용됩니다. 그래서 더 오타 또는이 실수 ;-)

답변

1

는 연결 시도하지 않고 컬에 의해 업로드 :

$token = "your_token"; 
$ebay_url = "https://bulksell.ebay.de/ws/eBayISAPI.dll?FileExchangeUpload"; 
$sendheaders = array(
"User-Agent: MyClient v1.6", 
); 
$fields = array(
"token" => $token, 
"file" => "@file.csv" 
); 

$ch = curl_init($ebay_url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response 
curl_setopt($ch, CURLOPT_NOBODY, 0); // set to 1 to eliminate body info from response 
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // use HTTP/1.0 instead of 1.1 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. ### 
curl_setopt($ch, CURLOPT_HTTPHEADER, $sendheaders); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); // use HTTP POST to send form data 
$resp = curl_exec($ch); //execute post and get results 
curl_close ($ch);