2012-03-21 174 views
1

尊敬的計算器社區, 此刻,我正在用PHP編寫一篇文章/客戶/計費軟件,這是讓我的合作伙伴測試它之前的最後一步。eBay PHP HTTP POST請求?

我現在真的被困住了。我們希望將我們的文章自動上傳到eBay。文件交換程序的CSV文件的生成工作正常,手動上傳也可以,文章將被列出。

現在我們希望軟件自己上傳。我們參考了eBay文件交換指南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

嘗試連接並上傳cUrl作者:

$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);