2016-03-03 135 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

相關問題