私はlaravelの小さなサイトに取り組んでおり、webservicesからいくつかのデータを取得してlocalhostで使いました。それらのすべてが要求を送信することはできません。cURLがサーバではなくlocalhostで動作しています
サーバー1 = http://testing2.vire-news.com/(ホスト:GoDaddyは)
サーバー2 = http://testing.asmani.pk/:あなたはそれはあなたがWebサービスから生じる与えることはありません検索ヒットした場合(ホストHostgatorの)
。私はstackoverflowの上のすべてを検索しました
がCURLOPT_POST
のすべての種類、CURLOPT_FOLLOWLOCATION
などを入れて、何もサーバー1に
を働かない、それは「エラーに
を与えるemexonline.comポート3000への接続に失敗しました:接続拒否」
サーバー2では接続を維持してタイムアウトします。 私はlaravel環境からテストするために同じコードの簡単なPHPファイルを作った。
注:私はfacebookとtwitter APIのような他のカールウェブサービスをテストしました。これらはすべてこれらのサーバーでうまく動作しており、ウェブサービスプロバイダに連絡しています。彼らのウェブサービスは何の問題もありません。
ここにコード私はXMLデータからユーザー名とパスワードを削除しました。 すべてがlocalhost上で正常に動作し、サーバー上でエラーが発生し、他のすべての機能は正常に動作しますが、Webサービスだけが接続していません。
$xml_data = '<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<SearchPart xmlns="http://emexonline.com:3000/MaximaWS/">
<Customer>
<UserName>username</UserName>
<Password>password</Password>
<SubCustomerId>0</SubCustomerId>
<CustomerId>20879</CustomerId>
</Customer>
<DetailNum>'.$Request->search.'</DetailNum>
<ShowSubsts>0</ShowSubsts>
</SearchPart>
</soap12:Body>
</soap12:Envelope>
';
$headers = array(
"POST /MaximaWS/Service.asmx HTTP/1.1",
"Host: emexonline.com",
"Content-Type: application/soap+xml; charset=utf-8",
"SOAPAction: \"http://dpd.com/common/service/LoginService/2.0/getAuth\"",
"Content-Length: ".strlen($xml_data)
);
$url = 'http://emexonline.com:3000/MaximaWS/Service.asmx';
$curll = curl_init();
curl_setopt($curll, CURLOPT_URL,$url);
curl_setopt($curll, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curll, CURLOPT_TIMEOUT, 30);
curl_setopt($curll, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curll, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curll, CURLOPT_POSTFIELDS, $xml_data);
$reply = curl_exec($curll);
まあcurl_errno($ch)
、curl_error($ch)
とcurl_getinfo($ch)
を使用して取得について質問しないで、私はそれらを使用して結果を持っています。
ここでここでの結果と成功localhostの実行の情報
Array ([url] => http://emexonline.com:3000/MaximaWS/service.wsdl [content_type] => text/html [http_code] => 405 [header_size] => 203 [request_size] => 834 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.578 [namelookup_time] => 0.25 [connect_time] => 0.422 [pretransfer_time] => 0.422 [size_upload] => 617 [size_download] => 1293 [speed_download] => 2237 [speed_upload] => 1067 [download_content_length] => 1293 [upload_content_length] => 617 [starttransfer_time] => 0.578 [redirect_time] => 0 [redirect_url] => [primary_ip] => 86.98.88.87 [certinfo] => Array () [primary_port] => 3000 [local_ip] => 192.168.0.102 [local_port] => 53325)
error: no error
が失敗し、サーバーの実行
Array ([url] => http://emexonline.com/MaximaWS/Service.asmx [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 30.001115 [namelookup_time] => 0.12449 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => Array () [primary_port] => 0 [local_ip] => [local_port] => 0)
error: Connection timed out after 30001 milliseconds
問題のあるサーバーでcURLが有効になっていますか? – FluxCoder
localhostからポートを使用していて、他のエンドポイントに当たっているときに、サーバーからcurlを作成しているときはportを使用しています。これには理由がありますか?サーバからリモートサーバへtelnetを試してみてください。あなたのPCから3000番台のサーバと、同じコードを使用しているtypo brotherだったサーバ – krasipenkov
@krasipenkovから試してみてください。 –