2014-04-17 193 views
1

我正在使用柯達api將照片打印功能集成到我的網站中。所有工作正常,但它提供了創造秩序的時間錯誤信息,你可以看到下面的網址在CURL請求中設置請求類型和內容類型

https://ws.test.kdfse.com/vasp2/rest/order/?retailer=Target&app=PNMEMORYDEMO&country=US&app_version=1.0

如果您無法看到錯誤消息,你可以看到我所得到的消息作爲誤差

------------------------------

HTTP狀態401

  • 類型:狀態報告
  • 消息:方法不允許
  • 說明:指定的HTTP方法不允許用於請求的資源(方法不允許)。

GlassFish應用服務器版3.1.2.2

------------------------------

由於這個原因,我也談到了與柯達api技術支持,但他們說,確保設置正確的「請求方法」POST和「Content-Type」作爲application/x-www-form-urlencoded呼叫。

我已經使用cURL進行此調用,但不知道如何在CURL請求中設置請求類型&內容類型。

我正在使用下面的代碼。請建議&糾正我的相同。

$ch = curl_init("https://ws.test.kdfse.com/vasp2/rest/order/PNPlasqTouch_T1366049430039_OKS13105x64222081_CTARGET/status/current"); 
curl_setopt($ch,CURLOPT_HEADER,1); 
curl_setopt($ch,CURLOPT_POST,1); 
curl_setopt($ch,CURLOPT_TIMEOUT,60); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); 
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$data); 
$result=curl_exec ($ch); 
echo "<pre>";print_r($result);exit; 

在此先感謝。

+0

'CURLOPT_SSL_VERIFYPEER'和'CURLOPT_SSL_VERIFYHOST'不應該是'0'。 –

+0

除此之外,您可以添加'curl_setopt($ ch,CURLOPT_VERBOSE,1);'以查看通過線路發送的內容;當你設置'CURLOPT_POSTFIELDS'時,內容類型和方法應該是預期的。什麼是'$數據'順便說一句? –

+0

使用'CURLOPT_HTTPHEADER'選項設置''Content-Type''標題。'POST'方法已經在你的腳本由'CURLOPT_POST'選項 – hindmost

回答

0

您可以使用;

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 

而最終的代碼將是;

$ch = curl_init("https://ws.test.kdfse.com/vasp2/rest/order/PNPlasqTouch_T1366049430039_OKS13105x64222081_CTARGET/status/current"); 
curl_setopt($ch,CURLOPT_HEADER,1); 
curl_setopt($ch,CURLOPT_POST,1); 
curl_setopt($ch,CURLOPT_TIMEOUT,60); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); 
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$data); 
curl_setopt($curl, CURLOPT_USERPWD, "your_username:your_password"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
$result=curl_exec ($ch); 
echo "<pre>";print_r($result);exit; 

更新:你可以看到here有關設置HTTP標頭的更多細節。此外,您正在使用安全服務,您可以將CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST設置爲1

+0

指定它給出了同樣的錯誤 – user2545352

+0

的結果應該是這樣的 { 「結果」:{ 「訂單ID」:「PNMEMORYDEMO_T1397680340273_OMHYDDAK9_CTARGET」, 「vendorOrderId」: 「MHYDDAK9」, 「URI」: 「https://ws.test.kdfse.com/vasp2/rest/order/PNMEMORYDEMO_T1397680340273_OMHYDDAK9_CTARGET」 }, 「狀態」:{ 「代碼」: 「OK」 } } – user2545352

+0

它給出了什麼錯誤? –

0

通過HTTP Status 401這意味着您未經授權。我點擊了你的鏈接,並詢問用戶/密碼。因此,設置身份驗證如下:

// use your user/password at here 
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); 
+0

我插入帶有正確的登錄憑據,上面的代碼,但它不工作 – user2545352

+0

結果應該是這樣的 { 「結果」:{ 「訂單ID」:「PNMEMORYDEMO_T1397680340273_OMHYDDAK9_CTARGET」, 「vendorOrderId」:「MHYDDAK9」, 「 URI「: 」https://ws.test.kdfse.com/vasp2/rest/order/PNMEMORYDEMO_T1397680340273_OMHYDDAK9_CTARGET「 }, 」狀態「:{ 」代碼「: 」OK「 }} 什麼 – user2545352

+0

你最新現在錯誤?用'curl_setopt($ ch,CURLOPT_VERBOSE,1)'運行代碼並顯示日誌打印。 –