我需要使用以下设置通过HTTP POST将XML字符串发送到另一台服务器...
POST /xmlreceive.asmx/CaseApplicationZipped HTTP/1.1
Host: www.dummyurl.co.uk
Content-Type: application/x-www-form-urlencoded
Content-Length: length
XMLApplication=XMLstring&byArray=base64string
我猜我需要通过cURL
或fsockopen
进行设置。
我已经尝试了以下但是没有任何运气让它发挥作用。
$url = "http://www.dummyurl.co.uk/XMLReceive.asmx/CaseApplicationZipped";
$headers = array(
"Content-Type: application/x-www-form-urlencoded"//,
);
$post = http_build_query(array('XMLApplication' => $XML, 'byArray' => $base64));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo "response: ".$response;
远程服务器提供以下响应......
"Object reference not set to an instance of an object."
答案 0 :(得分:1)
还没有足够的回复评论,所以我会将此作为答案发布。
PHP的cURL会自动发送主机(来自$url
)和Content-Length标头,因此您无需手动指定。
有一个方便的功能可用于构建$post
字符串:http_build_query。它将正确处理您的POST正文的编码。它看起来像
$post = http_build_query(array('XMLApplication' => $XML, 'byArray' => $base64));
如果您要注销收到的标题,请查看curl_getopt
功能。
至于您收到的错误,您似乎正在通过远程网站它没有预料到的事情。我不能代表您传递的内容或网站的期望,但Input string was not in a correct format
似乎暗示您的$ XML格式不正确,或者传递的不正确参数。