2017-05-29 56 views
0

我正在嘗試編寫一個PHP腳本來查詢我有權訪問的API。這個API需要一個JSON身體POST請求,與標準之一是PHP HTTP POST請求的JSON數組語法

"Analyses": ["Phenotype"] 

注意身邊有該字符串的第二部分沒有雙引號。當我嘗試用Httpful傳遞下面的腳本時,這個腳本給了我一個HTTP 500結果。如果沒有分析條件,我會以JSON格式輸出獲得正確的響應(儘管錯誤要求分析信息)。我認爲這與分析字符串的格式/語法有關,我不知道該怎麼做。如果我使用單引號,則會出現500錯誤。如果我將引號完全保留,它會假定它是一個數組,並給我一個對象錯誤「對象引用未設置爲對象的實例」。我不知道如何在沒有引號的情況下傳遞該格式。

$response = \Httpful\Request::post($url) 
     ->sendsJson() 
     ->body('{"apiUserKey":"abcde", 
       "apiUserId":"efghi", 
       "Species":"9606", 
       "Analyses": "["Phenotype"]" 
       }') 
     ->send(); 

謝謝!

+0

JSON中不允許使用單引號。該錯誤「對象引用未設置爲對象的實例」是.net相關的?如果他們需要一個數組,那麼''分析「:[」表型「,」B「,」C「]應該是有效的? – Robert

回答

0

你的例子幾乎是正確的,但是你包括一組雙引號給許多人。您正嘗試在「分析」字段中傳遞字符串數組。數組本身不需要用雙引號。

$response = \Httpful\Request::post($url) 
    ->sendsJson() 
    ->body('{"apiUserKey":"abcde", 
      "apiUserId":"efghi", 
      "Species":"9606", 
      "Analyses": ["Phenotype"] 
      }') 
    ->send(); 
+0

如果我運行你建議的腳本,我得到了「對象引用未設置爲對象實例」的錯誤。羅伯特上面說過這可能是一個.net錯誤?通常分析標準將是多個數組(例如[「表型」,「組織」))。我曾嘗試json_encode(數組...),它返回一個空白屏幕,而不是500錯誤。 – user121106

+0

恐怕您將不得不聯繫遠程服務的開發人員。因爲它對於一組字符串是有效的JSON。 – 2017-05-29 19:13:19

+0

我與開發人員交談過,錯誤實際上不是來自分析部分,而是錯誤標記「SpeciesID」,它應該是「SpeciesID」。您的格式確實解決了問題,並將此標籤標記爲正確答案。謝謝! – user121106