Обработка ошибок в XML-запросе веб-службы - PullRequest
0 голосов
/ 30 августа 2011

Я пытался выполнить запрос XML. Я столкнулся с таким количеством проблем, которые мне удалось решить. Но этот я не мог решить. это скрипт:

$url ="WebServiceUrl";
$xml="XmlRequest";
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_MUTE, 1);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
            curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($ch);
            curl_close($ch);
 echo $output;

Это дает мне эту ошибку:

System.InvalidOperationException: Недопустимый формат запроса: text / xml. в System.Web.Services.Protocols.HttpServerProtocol.ReadParameters () в System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest ()

Я все еще новичок в этом. Так что будь осторожен со мной :) спасибо.

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Существует два основных типа содержимого, используемых с методом HTTP POST: application / x-www-form-urlencoded и multipart / form-data.

Тип содержимого определяет, каким должен быть формат CURLOPT_POSTFIELDS. Если вы используете значение по умолчанию (application / x-www-form-urlencoded), вы, вероятно, захотите использовать build_http_query () для построения строки запроса в кодировке url.

Если вы отправляете данные не ASCII, вы можете передать ассоциативный массив с ключами, которые соответствуют именам полей и значениям, которые соответствуют значению для поля. Использование этого метода приведет к тому, что запрос будет выполнен с типом содержимого multipart / formdata.

На данный момент кажется, что следующим шагом должно быть выяснение того, какие поля ожидает API.

application / x-www-form-urlencoded или multipart / form-data?

0 голосов
/ 30 августа 2011

Похоже, вы отправляете материал в формате text / xml, а это не то, что он хочет.Найдите документы для этого веб-сервиса, например, WSDL, если он есть, и выясните, какие форматы данных он принимает.

Убедитесь, например, что в действительности не говорится, что он будет отвечать в XML после получения запроса в качестве стандартных переменных HTML POST.

...