0

チャネルアドバイザーにログインしようとしていますが、次のエラーが出力されました: HTTP/1.1 302 Moved Temporarily.

しかし、先週、ログインしてデータを取得すると完全に実行され、再度実行するとエラーが発生します。

これが私のコードです:

 $pages = array('home' => 
 'https://login.channeladvisor.com/?gotourl=https%3a%2f%2fcomplete.channeladvisor.com%2f', 
           'login' => 
 'https://login.channeladvisor.com/?gotourl=https%3a%2f%2fcomplete.channeladvisor.com%2f', 
           'data' => 
  'https://merchant.channeladvisor.com/AM/MyInventory/View_Inventory.aspx?apid=32001263'); 

  $ch = curl_init(); 
  //Set options for curl session 
  $options = array(CURLOPT_USERAGENT => 'Mozilla/12.0 (compatible; MSIE 6.0; Windows NT 5.1)', 
         CURLOPT_SSL_VERIFYPEER => FALSE, 
         CURLOPT_SSL_VERIFYHOST => 2, 
         CURLOPT_HEADER => TRUE, 
         CURLOPT_RETURNTRANSFER => TRUE, 
         CURLOPT_COOKIEFILE => 'cookies.txt', 
         CURLOPT_COOKIEJAR => 'cookies.txt'); 

//Hit home page for session cookie 
$options[CURLOPT_URL] = $pages['home']; 
curl_setopt_array($ch, $options); 
//curl_exec($ch); 

//Login 
$options[CURLOPT_URL] = $pages['login']; 
$options[CURLOPT_POST] = TRUE; 
$options[CURLOPT_POSTFIELDS] = 'username=xxxxx@gmail.com&password=xxxxxxx'; 
$options[CURLOPT_FOLLOWLOCATION] = false;
curl_setopt_array($ch, $options);
curl_exec($ch);

//Hit data page 
$options[CURLOPT_URL] = $pages['data'];
curl_setopt_array($ch, $options); 
$data = curl_exec($ch); 

//Output data
echo $data; 

//Close curl session 
curl_close($ch); 
4

3 に答える 3

0

「https://merchant.channeladvisor.com/AM/MyInventory/View_Inventory.aspx」からデータを探している場合は、代わりに API を使用してみませんか?

http://developer.channeladvisor.com/display/cadn/Inventory+Service

于 2012-06-06T15:13:01.197 に答える
0

インベントリ情報をエクスポートするだけなら、ChannelAdvisor には独自の UI 利用可能なインベントリ エクスポート サービスがあります。少なくとも、コードを自動化してそれを開始し、エクスポートされた csv またはタブ delim ファイルをダウンロードできます: http://ssc.channeladvisor.com/howto/exporting-inventory

于 2012-06-06T15:20:20.320 に答える
-1

Channel Advisorからのこのような更新を処理する必要があると思うので、リダイレクトに従ってください。

これはcurlを使用してChannelAdvisorにログインする一般的な方法ではないと思うので、ChannelAdvisorを更新するたびにコードを更新する必要があります。curlを使用してGoogleAnalyticsデータを取得することしかできない場合は、覚えておいてください。ログインシステムを更新するたびに、独自のcurlログインメソッドを書き直す必要があります-退屈です。

カールを使用してフォローすることについて、この回答を読むことができます。Header: Location基本的に:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$a = curl_exec($ch);
if(preg_match('#Location: (.*)#', $a, $r))
 $l = trim($r[1]);
于 2012-06-04T07:56:36.503 に答える