【问题标题】:Error Handling in Web service XML requestWeb 服务 XML 请求中的错误处理
【发布时间】:2011-11-06 18:16:42
【问题描述】:

我一直在尝试执行 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()

我还是个菜鸟。所以对我放轻松:) 谢谢。

【问题讨论】:

  • 谁能帮我解决这个问题?
  • 如果是WSDL使用SoapClient,如果你需要使用这种代码风格,检查应该请求什么格式(并删除text/xml content-type)
  • 我怎么知道请求应该是什么格式?
  • 来自地址,通常以.wsdl结尾,但我更愿意学习SoapClient (php.net/manual/en/soapclient.soapclient.php)

标签: php xml curl xmlhttprequest


【解决方案1】:

看起来您正在以 text/xml 的形式发送内容,这不是它想要的。查找此 Web 服务的文档,例如WSDL 的东西,如果它在那里,找出它接受什么数据格式。

请确保,例如这并不是说它会在收到作为标准 HTML POST 变量的请求后以 XML 响应。

【讨论】:

  • 收到请求后会以XML形式响应
  • 网络服务的支持者告诉我尝试使用“application/x-www-form-urlencoded”作为内容类型。但同样的错误发生
  • 在这种情况下,它确实需要标准的 HTML POST 内容。检查 CURLOPT_POSTFIELDS here 的说明并更改示例中的 $xml 变量以匹配它们。
【解决方案2】:

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 or multipart/form-data?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2011-05-12
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多