當發起一個rpc調用時,除通知之外,服務端都必須回復響應。響應表示為一個JSON對象,使用以下成員:
**jsonrpc**
> 指定JSON-RPC協議版本的字符串,必須準確寫為“2.0”
**result**
> 該成員在成功時必須包含。
>
> 當調用方法引起錯誤時必須不包含該成員。
>
> 服務端中的被調用方法決定了該成員的值。
**error**
> 該成員在失敗是必須包含。
>
> 當沒有引起錯誤的時必須不包含該成員。
>
> 該成員參數值必須為5.1中定義的對象。
**id**
> 該成員必須包含。
>
> 該成員值必須于請求對象中的id成員值一致。
>
> 若在檢查請求對象id時錯誤(例如參數錯誤或無效請求),則該值必須為空值。
響應對象必須包含result或error成員,但兩個成員必須不能同時包含。
## 5.1 錯誤對象
當一個rpc調用遇到錯誤時,返回的響應對象必須包含錯誤成員參數,并且為帶有下列成員參數的對象:
**code**
> 使用數值表示該異常的錯誤類型。 必須為整數。
**message**
> 對該錯誤的簡單描述字符串。 該描述應盡量限定在簡短的一句話。
**data**
> 包含關于錯誤附加信息的基本類型或結構化類型。該成員可忽略。 該成員值由服務端定義(例如詳細的錯誤信息,嵌套的錯誤等)。
-32768至-32000為保留的預定義錯誤代碼。在該范圍內的錯誤代碼不能被明確定義,保留下列以供將來使用。錯誤代碼基本與XML-RPC建議的一樣,url:?[http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php](http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php)
| code | message | meaning |
| --- | --- | --- |
| -32700 | Parse error語法解析錯誤 | 服務端接收到無效的json。該錯誤發送于服務器嘗試解析json文本 |
| -32600 | Invalid Request無效請求 | 發送的json不是一個有效的請求對象。 |
| -32601 | Method not found找不到方法 | 該方法不存在或無效 |
| -32602 | Invalid params無效的參數 | 無效的方法參數。 |
| -32603 | Internal error內部錯誤 | JSON-RPC內部錯誤。 |
| -32000 to -32099 | Server error服務端錯誤 | 預留用于自定義的服務器錯誤。 |
除此之外剩余的錯誤類型代碼可供應用程序作為自定義錯誤。