我无法在这里找到适用于我的情况的问题。根据我对这段代码的作用的理解,它实际上应该有效,但我只是不明白它为什么不行。
我正在从文本文件中读取SKU列表。每个SKU都在它自己的路线上。我需要做的只是将SKU单独传递给我的XML-RPC请求并打印结果。从我在下面粘贴的代码,它似乎循环通过SKU但只返回一个有效的结果。
如果我通过$ request变量手动传递每个SKU,我会得到有效的结果。我一直在测试5个SKU,但实际上我有200个,如果能让它工作的话会很好。我甚至打破了Lydia PHP培训视频,看看我是否听不懂,但看起来我的代码不对。
感谢您对此的帮助。
<?php
$list = file("skus2.txt");
print_r($list);
foreach ($list as $sku){
$server_url = "http://xxxx.xxx/webservices/index.php";
$request = xmlrpc_encode_request("catalog.findProductImagesBySku", array($sku));
$context = stream_context_create(array(
'http' => array(
'method' => "POST",
'header' => "Content-Type: text/xml",
'content' => $request)));
$file = file_get_contents($server_url, false, $context);
$response = xmlrpc_decode($file);
print_r ($response);
}
?>
我尝试过这种感觉。我已经在这里工作了几个小时。
这是我得到的回报。正如你可以看到它在前4个版本上的失败,即使从print语句中,它正在抓住正确的SKU并且它在最后一个SKU上取得了成功。所有SKU都有效,因为我一次测试一次。
Array
(
[0] => DJ750605
[1] => TO88116
[2] => TO1112516
[3] => TO1112506
[4] => ENAI200006
)
//start of 1st run of foreach loop
DJ750605
Warning: file_get_contents(http://xxx/webservices/index.php) [function.file-get-contents]: failed to open stream: HTTP request failed! ...
//start of 2nd run of foreach loop
TO88116
Warning: file_get_contents(http://xxx/webservices/index.php) [function.file-get-contents]: failed to open stream: HTTP request failed!...
//start of 3rd run of foreach loop
TO1112516
Warning: file_get_contents(http://xxx/webservices/index.php) [function.file-get-contents]: failed to open stream: HTTP request failed!...
//start of 4th run of foreach loop
TO1112506
Warning: file_get_contents(http://xxx/webservices/index.php) [function.file-get-contents]: failed to open stream: HTTP request failed!...
//start of 5th run of foreach loop
ENAI200006Array
(
[0] => Array
(
[sku] => ENAI200006
[large_url] => http://xxxENAI200006.JPG
[medium_url] => http://xxxENAI200006.JPG
[thumb_url] => http://xxxENAI200006.JPG
[url] => http://xxxENAI200006.JPG
)
)
更新:工作代码:)
<pre>
<?php
$list = file('skus2.txt', FILE_IGNORE_NEW_LINES);
print_r($list);
foreach ($list as $sku){
$server_url = "http://xxx.com/xxx/webservices/index.php";
$request = xmlrpc_encode_request("catalog.findProductImagesBySku", array($sku));
$context = stream_context_create(array(
'http' => array(
'method' => "POST",
'header' => "Content-Type: text/xml",
'content' => $request)));
$file = file_get_contents($server_url, false, $context);
$response = xmlrpc_decode($file);
print_r ($response);
}
?>
</pre>
再次感谢, 干杯!
答案 0 :(得分:0)
我怀疑文件调用('skus2.txt'),如手册中所述:
注意:
结果数组中的每一行都包含行结尾,除非使用了FILE_IGNORE_NEW_LINES,因此如果您不希望行结束,则仍需要使用rtrim()。
我会尝试这样调用:
$list = file('somefile.txt', FILE_IGNORE_NEW_LINES);
甚至只是手动传递数组以查看它是否有效,即:
$list = array('TO88116',
'TO1112516',
'etc...'
);
您至少可以通过这种方式缩小调试范围。
好运!