必须从php
调用GET-WS。
网址:https://testWS/CompanyGeneralInformation?IdUser=123&CUI=345
当query-string添加为静态时,它工作正常。$out = file_get_contents("https://testWS/CompanyGeneralInformation?CUI=345&IdUser=123")
但当预先计算并作为参数传递时,得到错误
$id=123;
$qs="https://testWS/CompanyGeneralInformation?CUI=345&IdUser=".$id;
$out = file_get_contents($qs);
//but this is OK
//$qs="https://testWS/CompanyGeneralInformation?CUI=345&IdUser=123";
//$out = file_get_contents($qs);
错误:
Warning: file_get_contents(https://...CompanyGeneralInformation?IdUser=<?xml version="1.0" encoding="utf-8"?>
<int xmlns="http://tempuri.org/">123</int>&CUI=567)
: Failed to open stream: HTTP request failed! HTTP/1.1 400
注:Seem id从服务器端转换为XML???进一步,当静态始终有效时,POST(通过curl)的自定义参数会出现相同的问题
通过 curl 过帐(错误)
$str=strval("CUI=".$cui."&IdUser=".$id);
curl_setopt($ch, CURLOPT_POSTFIELDS,"$str"); //or either $str
System.Web.HttpRequestValidationException: A potentially dangerous Request.
Form value was detected from the client (IdUser="<?xml version="1.0" ...").
at System.Web.HttpRequest.ValidateString(String value, String collectionKey,
RequestValidationSource requestCollection) at
System.Web.HttpRequest.ValidateHttpValueCollection(HttpValueCollection collection,
RequestValidationSource requestCollection) at System.Web.HttpRequest.get_Form() at
System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request) at
System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() at
System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
注:WS文件规定:GET /link/CompanyGeneralInformation?CUI=string&IdUser=string HTTP/1.1
响应是xml(但现在无关紧要)。
注意(错误源):Response is xml (but irrelevant now)
:非常相关,因为在使用WS获取id后,首先会出现错误,并且没有转换为变量。然后传递id(实际上是xml,因为没有解析)。
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
...
请让我知道可能是什么问题。
1条答案
按热度按时间i7uaboj41#
从回显的注解和提到的错误来看,这似乎只是一个在通过URL传递XML之前没有从XML中提取所需信息的问题。