Подключение к ASP.Веб-сервис Net с PHP и извлечение данных в формате JSON

#php #asp.net #web-services #json

#php #asp.net #веб-сервисы #json

Вопрос:

У меня возникли проблемы с подключением к ASP.Веб-сервис Net, использующий PHP.

Известно, что веб-сервис работоспособен, поскольку он возвращает данные при подключении с использованием Javascript из того же домена, но при попытке подключения с использованием PHP я получаю следующую ошибку:


Тип содержимого внутренней ошибки сервера HTTP /1.1 500: application / json; кодировка =utf-8 Сервер: Microsoft-IIS /7.5 jsonerror: true X-Powered-By: ASP.NET Дата: Вт, 17 мая 2011 03:40:17 GMT Подключение: закрыть Содержимое-Длина: 819

{"Сообщение": "Недопустимый примитив JSON: birthday.", "StackTrace": " в System.Web.Script.Сериализация.JavaScriptObjectDeserializer.DeserializePrimitiveObject()

[и т.д.]

Тип содержимого установлен в «application / json; charset=utf-8» в PHP, и мы пытаемся отправить параметр с именем «birthday», используя следующие данные POST в PHP:

$post_data = массив ( 
 'birthday' => 'none' 
);

Я думаю, что веб-служба ASP по какой-то причине не может проанализировать параметр ‘birthday’, но я не уверен, почему.

Нужно ли мне явно кодировать данные POST в формате JSON из PHP перед вызовом веб-службы?

Спасибо.

Комментарии:

1. Вы могли бы попробовать понаблюдать за данными, передаваемыми по проводам, с помощью Fiddler или WireShark сравнить рабочий код с нерабочим кодом и посмотреть, есть ли какие-либо различия.

2. Это тоже публикация javascript или он использует get? Можете ли вы предоставить javascript, который работает

Ответ №1:

Возможно, этот веб-сервис принимает данные post в формате Json. Если это так, то вам следует использовать

 $post_data = array( 'birthday' => 'none' );
$jsonData =  json_encode ($post_data );
  

для получения подробной информации json_encode

Комментарии:

1. Вы правы. Я вручную закодировал строку JSON, и ответом были нужные мне данные. Спасибо