Ошибка Json RPC 32600

Я использую jquery ajax для передачи запроса json rpc на удаленный сервер. Вот моя строка json:

{"jsonrpc":"2.0","method":"merchant_check","params":{"hostID":150999,"orderID":107,"amount":"7777","currency":"051","mid":15001038,"tid":15531038,"mtpass":"12345","trxnDetails":""},"id":107}

Я получаю эту ошибку:

{"jsonrpc":"2.0","id":null,"error":{"code":-32600,"message":"Invalid JSON-RPC 2.0 request error (-32600)"}}

Что я делаю неправильно? Спасибо за помощь.


person Rafael Sedrakyan    schedule 03.04.2012    source источник
comment
В какой сервис это отправляется? Некоторым нравится [значение], другим нравится {парам:значение}. Он определенно принимает JSON-RPC v2.0? Ожидает ли служба, что параметры проверки подлинности будут находиться в конверте JSON-RPC? В противном случае, это выглядит нормально для меня.   -  person David-SkyMesh    schedule 04.04.2012
comment
Он отправляется в платежную систему. Сервер определенно принимает запросы json-rpc 2.0. Список параметров правильный. Ошибка 32600 означает вызов процедуры с недопустимым JSON-RPC. Поэтому я думаю, что что-то не так с моим синтаксисом.   -  person Rafael Sedrakyan    schedule 04.04.2012
comment
Я не знаю :-) Спецификация здесь: jsonrpc.org/specification   -  person David-SkyMesh    schedule 04.04.2012
comment
Возможно, вы отправляете какой-то символ Юникода, который выглядит как синтаксическая пунктуация, но не является таковым?   -  person David-SkyMesh    schedule 04.04.2012
comment
Я пробовал несколько онлайн-валидаторов json, и все они говорят, что моя строка действительна.   -  person Rafael Sedrakyan    schedule 05.04.2012
comment
Ну тогда в силе. Однако этот конкретный веб-сервис ожидает чего-то другого.   -  person David-SkyMesh    schedule 05.04.2012


Ответы (2)


Это может быть библиотека JSON, которую использует служба. Попробуйте следующее:

  1. Поместите пробелы между концом ключевой строки + двоеточием и значением, «ключ»: «значение» vs «ключ»: «значение»
  2. Попробуйте указать идентификатор запроса в виде строки, "id": "1" vs "id": 1
  3. Я не знаю, насколько хорошо был закодирован сервис, но если у вас искаженные параметры, он может выдать вам ошибку -32600 вместо -32602. Итак, какую валюту вы используете, которая не требует десятичной точки и отправляется в виде строки? Что такое "середина", целое число?

Ваш объект запроса выглядит хорошо, он думает, что служба ожидает и вызывает хороший или плохой объект запроса.

person Dennis    schedule 12.04.2013

У меня была такая же проблема с использованием сети json-rpc. Проблема была вызвана заголовком content-type. По умолчанию в моем браузере было установлено значение application/x-www-form-urlencoded, и он выдал эту ошибку. Установка его на application/json устранила мою проблему.

person Federico    schedule 30.05.2013