【发布时间】:2016-10-26 15:23:56
【问题描述】:
我在 laravel 上的一个小网站上工作,我从 web 服务中检索了一些数据并在我的 localhost 上使用它,一切都很好,然后我将它上传到我的服务器的 3 上,它们都无法发送请求。
服务器 1 = http://testing2.vire-news.com/(主机:godaddy)
服务器 2 = http://testing.asmani.pk/(主机:hostgator)
如果你点击搜索,它不会给你来自网络服务的结果。
我已经在 stackoverflow 上搜索了所有类型的 CURLOPT_POST、CURLOPT_FOLLOWLOCATION 等,但没有任何结果
在服务器 1 上出现错误
“无法连接到 emexonline.com 端口 3000:连接被拒绝”
在服务器 2 上,它保持连接,然后超时。 我制作了一个相同代码的简单 php 文件来测试 laravel 环境,它也无法正常工作。
注意:我已经测试了其他 curl 网络服务,如 facebook 和 twitter API,它们在这些服务器上都运行良好,我已经联系了网络服务提供商,他们说他们这边一切都很好,其他客户也在使用他们的webservice没有任何问题。
这是我从 XML 数据中记下用户名和密码的代码。 在本地主机上一切正常,在服务器上它给出错误,所有其他功能都正常工作,只有 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);
好吧,不要问get使用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?
-
当您从服务器进行 curl 时,您正在使用端口,而来自 localhost 的服务器没有端口并命中其他端点。是否有一个原因?从您的电脑和服务器尝试从服务器远程登录到远程服务器的 3000 端口
-
@krasipenkov 是一个拼写错误的兄弟,他们都使用相同的代码。
-
@FluxCoder 当然 curl 已启用我已经在 phpinfo 上检查过它,在我的问题中我提到其他 web 服务正在使用 curl。
-
好的,尝试使用 tenet 连接到服务器并 ping ip 地址(您在本地解析)以查看您的服务器是否可以通过网络访问远程服务器
标签: php xml web-services curl server