2016-03-03 136 views
0

我试图发送一个基本的HTTP请求到Microsoft Dynamics NAV 2016年的OData Web服务出现故障时,使用下面的PHP代码:简单的HTTP请求的OData web服务工作在本地主机上正常,但在服务器上

$url = 'https://<Server>:<WebServicePort>/<ServerInstance>/OData/Company(\'<CompanyName>\')/customer(\'1\')'; 
$credentials = 'user:password'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_USERPWD, $credentials); 
curl_setopt($ch, CURLOPT_POST, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
    'Accept: application/json', 
    'Content-Type: application/json' 
]); 
$output = curl_exec($ch); 
curl_close($ch); 

echo $output; 

此代码在localhost上执行时返回预期结果。

但是,当我在服务器上执行相同的代码时,浏览器会一直等待响应,直到超时。

我也使用the HTTPful library尝试:

$url = 'https://<Server>:<WebServicePort>/<ServerInstance>/OData/Company(\'<CompanyName>\')/customer(\'1\')'; 

$response = \Httpful\Request::get($url) 
    ->sendsJson() 
    ->authenticateWith('user', 'password') 
    ->addHeaders([ 
     'Accept' => 'application/json', 
     'Content-Type' => 'application/json' 
    ])->send(); 

echo json_encode($response->body, JSON_PRETTY_PRINT); 

结果都是一样的。

localhost和服务器都使用PHP5.5并启用了cURL,并发送GET请求给例如。 http://en.gravatar.com/johnslegers.json在服务器上工作得很好。

任何想法可能会导致这种情况和/或如何解决它?

+0

您的非本地主机服务器可以让任何外界的请求? – Halcyon

+0

@Halcyon:发送一个GET请求给例如。 http://en.gravatar.com/johnslegers.json在服务器上工作得很好。 –

+0

和其他请求odata webserivce? – Halcyon

回答

0

我已经发现了问题的原因:

  • 在Microsoft Dynamics NAV 2016年的OData Web服务使用端口1103
  • 端口80,443,25和110是在服务器上打开的唯一端口我试图拨打这项服务

我们的Microsoft Dynamics提供商不能改变他们正在使用的端口,也不是我们的虚拟主机提供商为我们开放此端口的选项。

跟我的老板讨论后,我们同意将我们的网站托管到另一个供应商为我们提供了更大的灵活性,并不会阻止端口1103

相关问题