2015-06-27 57 views
-1

我想通過REST API使用HTTP PUT請求更新對象。我是越來越喜歡400種不同的錯誤,但現在修改我的代碼和頭後,我得到500,這意味着是否HTTP狀態碼500意味着其他錯誤代碼不會發生

Internal Error 500 : The server encountered an unexpected 
condition which prevented it from fulfilling the request. 

這是否意味着下面的錯誤,我不擔心,這意味着操作被授權,方法不禁止等等等等

  • 未經授權401
  • PaymentRequired 402
  • 403禁止
  • 找不到404

p.s我正在使用JSON。

String json = "my json string with escape characters" 
String st= "username:password"; 
byte[] encoded = Base64.encodeBase64(st.getBytes());   
String credentials = new String(encoded); 
String url= "http://localhost:10108/grc/api/contents/20081"; 

URL object=new URL(url); 
HttpURLConnection con = (HttpURLConnection) object.openConnection(); 

con.setDoOutput(true); 
con.setDoInput(true); 
con.setRequestProperty("Content-Type", "application/json"); 
con.setRequestProperty("Accept","application/json"); 
con.setRequestProperty ("Authorization", "Basic " + credentials); 

con.setRequestMethod("PUT"); 

JSONObject jsonObject = (JSONObject)new JSONParser().parse(json); 

OutputStream os = con.getOutputStream(); 
os.write(jsonObject.toJSONString().getBytes()); 
os.flush(); 

int responseCode = con.getResponseCode(); 

我原來的JSON是消除linbreaks和使用轉義序列之後,以下

{ 
    "name": "Decommisioned CBU One", 
    "id": "2116", 
    "description": "Decommisioned CBU One", 
    "parentFolderId": "2115", 
    "fields": { 
     "field": [{ 
      "dataType": "ID_TYPE", 
      "id": "29", 
      "name": "Resource ID", 
      "value": "2116" 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "63", 
      "name": "Comment" 
     }, { 
      "dataType": "INTEGER_TYPE", 
      "id": "60", 
      "name": "Created By", 
      "value": 6 
     }, { 
      "dataType": "DATE_TYPE", 
      "id": "59", 
      "name": "Creation Date", 
      "value": "2015-02-04T20:23:26.000+05:00" 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "57", 
      "name": "Description", 
      "value": "Decommisioned CBU One" 
     }, { 
      "dataType": "DATE_TYPE", 
      "id": "61", 
      "name": "Last Modification Date", 
      "value": "2015-02-04T20:23:26.000+05:00" 
     }, { 
      "dataType": "INTEGER_TYPE", 
      "id": "62", 
      "name": "Last Modified By", 
      "value": 6 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "58", 
      "name": "Location", 
      "value": "/_op_sox/Project/Default/BusinessEntity/Emirates NBD PJSC/Emirates NBD Bank/Wholesale Banking/(Decommissioned) Corporate Banking/Decommisioned CBU One/Decommisioned CBU One.txt" 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "56", 
      "name": "Name", 
      "value": "Decommisioned CBU One.txt" 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "66", 
      "name": "Orphan" 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "125", 
      "name": "OPSS-BusEnt:Business Entity Chart", 
      "value": "${\"labelKey\" : \"label.hierarchyDiagram.url\", \"path\" : \"/visualization/VizRenderer.jsp\", \"modes\" : [\"view\", \"edit\"],\n  \"parameters\" :{\"oid\" : \"$objectId\",\"viz\" : \"EntityHierarchy\"},\n  \"popUp\" : {  \"windowAttributes\" : \"height=800,width=1000,menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=yes,name=_blank\"\n  }\n  }" 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "124", 
      "name": "OPSS-BusEnt:Compliance Owner" 
     }, { 
      "dataType": "ENUM_TYPE", 
      "id": "121", 
      "name": "OPSS-BusEnt:Entity Type", 
      "enumValue": { 
       "id": "229", 
       "name": "Business", 
       "localizedLabel": "Business", 
       "index": 2, 
       "hidden": false 
      } 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "123", 
      "name": "OPSS-BusEnt:Executive Owner" 
     }, { 
      "dataType": "ENUM_TYPE", 
      "id": "133", 
      "name": "OPSS-BusEnt:In RCSA Scope", 
      "enumValue": { 
       "id": "227", 
       "name": "No", 
       "localizedLabel": "No", 
       "index": 2, 
       "hidden": false 
      } 
     }, { 
      "dataType": "MULTI_VALUE_ENUM", 
      "id": "122", 
      "name": "OPSS-BusEnt:In Scope" 
     }, { 
      "dataType": "STRING_TYPE", 
      "id": "126", 
      "name": "OPSS-BusEnt:Logo URL" 
     }, { 
      "dataType": "CURRENCY_TYPE", 
      "id": "132", 
      "name": "OPSS-BusEnt:Risk Appetite", 
      "baseAmount": 0.0, 
      "localAmount": 0.0 
     }] 
    }, 
    "typeDefinitionId": "6", 
    "primaryParentId": "2112" 
} 

,我留下,我現在用的是我的JSON

{ \"name\": \"Decommisioned CBU One\", \"id\": \"2116\", \"description\": \"Decommisioned CBU One\", \"parentFolderId\": \"2115\", \"fields\": { \"field\": [{ \"dataType\": \"ID_TYPE\", \"id\": \"29\", \"name\": \"Resource ID\", \"value\": \"2116\" }, { \"dataType\": \"STRING_TYPE\", \"id\": \"63\", \"name\": \"Comment\" }, { \"dataType\": \"INTEGER_TYPE\", \"id\": \"60\", \"name\": \"Created By\", \"value\": 6 }, { \"dataType\": \"DATE_TYPE\", \"id\": \"59\", \"name\": \"Creation Date\", \"value\": \"2015-02-04T20:23:26.000+05:00\" }, { \"dataType\": \"STRING_TYPE\", \"id\": \"57\", \"name\": \"Description\", \"value\": \"Decommisioned CBU One\" }, { \"dataType\": \"DATE_TYPE\", \"id\": \"61\", \"name\": \"Last Modification Date\", \"value\": \"2015-02-04T20:23:26.000+05:00\" }, { \"dataType\": \"INTEGER_TYPE\", \"id\": \"62\", \"name\": \"Last Modified By\", \"value\": 6 }, { \"dataType\": \"STRING_TYPE\", \"id\": \"58\", \"name\": \"Location\", \"value\": \"/_op_sox/Project/Default/BusinessEntity/Emirates NBD PJSC/Emirates NBD Bank/Wholesale Banking/(Decommissioned) Corporate Banking/Decommisioned CBU One/Decommisioned CBU One.txt\" }, { \"dataType\": \"STRING_TYPE\", \"id\": \"56\", \"name\": \"Name\", \"value\": \"Decommisioned CBU One.txt\" }, { \"dataType\": \"STRING_TYPE\", \"id\": \"66\", \"name\": \"Orphan\" }, { \"dataType\": \"STRING_TYPE\", \"id\": \"125\", \"name\": \"OPSS-BusEnt:Business Entity Chart\", \"value\": \"${\\"labelKey\\" : \\"label.hierarchyDiagram.url\\", \\"path\\" : \\"/visualization/VizRenderer.jsp\\", \\"modes\\" : [\\"view\\", \\"edit\\"],\n \\"parameters\\" :{\\"oid\\" : \\"$objectId\\",\\"viz\\" : \\"EntityHierarchy\\"},\n \\"popUp\\" : { \\"windowAttributes\\" : \\"height=800,width=1000,menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=yes,name=_blank\\"\n }\n }\" }, { \"dataType\": \"STRING_TYPE\", \"id\": \"124\", \"name\": \"OPSS-BusEnt:Compliance Owner\" }, { \"dataType\": \"ENUM_TYPE\", \"id\": \"121\", \"name\": \"OPSS-BusEnt:Entity Type\", \"enumValue\": { \"id\": \"229\", \"name\": \"Business\", \"localizedLabel\": \"Business\", \"index\": 2, \"hidden\": false } }, { \"dataType\": \"STRING_TYPE\", \"id\": \"123\", \"name\": \"OPSS-BusEnt:Executive Owner\" }, { \"dataType\": \"ENUM_TYPE\", \"id\": \"133\", \"name\": \"OPSS-BusEnt:In RCSA Scope\", \"enumValue\": { \"id\": \"227\", \"name\": \"No\", \"localizedLabel\": \"No\", \"index\": 2, \"hidden\": false } }, { \"dataType\": \"MULTI_VALUE_ENUM\", \"id\": \"122\", \"name\": \"OPSS-BusEnt:In Scope\" }, { \"dataType\": \"STRING_TYPE\", \"id\": \"126\", \"name\": \"OPSS-BusEnt:Logo URL\" }, { \"dataType\": \"CURRENCY_TYPE\", \"id\": \"132\", \"name\": \"OPSS-BusEnt:Risk Appetite\", \"baseAmount\": 0.0, \"localAmount\": 0.0 }] }, \"typeDefinitionId\": \"6\", \"primaryParentId\": \"2112\" } 
+0

「錯誤500」只是意味着,無論出錯了,您都需要在服務器端進行調試。從您的服務器和/或REST應用程序的錯誤日誌開始。 – paulsm4

+0

如果您收到500個錯誤,這意味着服務器接受了您發送的請求,但在服務器端發生了一些情況,還有一件事可能是由於無效數據或缺失數據導致的錯誤 –

回答

2

不幸的是,HTTP狀態500實際上只是一個全面的服務器上的意外錯誤。錯誤可能在任何地方,即使在驗證碼內。因此,即使在發佈401響應之前,呼叫仍有可能被炸燬。

在一個完美的世界中,500個響應不會發生,因爲開發者會捕獲所有可能的錯誤並返回有用的響應。

服務所有者應該對500個錯誤感興趣並關心500個錯誤,客戶端不應該能夠導致它們(確定的客戶端可以使用它們來DOS服務)。接下來要做的最好的事情是聯繫服務所有者並要求他們查看錯誤原因的日誌。

1

最終,follwowing串,服務器決定返回什麼樣的狀態碼,但5xx狀態碼的標準含義(與4xx狀態碼相反)是服務器端出現問題o f事物(如服務器執行null dererefence或其他嚴重錯誤),而4xx狀態碼則意味着客戶端/請求發送出錯。