2012-03-21 175 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);