Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将xml发布到RESTAPI_Php_Xml_Api_Rest_Post - Fatal编程技术网

使用php将xml发布到RESTAPI

使用php将xml发布到RESTAPI,php,xml,api,rest,post,Php,Xml,Api,Rest,Post,我真的希望有人能帮我解决这个问题 我需要使用php向RESTful API发布xml,但我完全不知道从哪里开始 我可以构建xml,但如何发布它?我不能使用cURL库。您可以使用file\u get\u contents()allow\u url\u fopen $context = stream_context_create(array('http'=>array( 'method' => 'POST' 'content' => $myXMLBody )));

我真的希望有人能帮我解决这个问题

我需要使用php向RESTful API发布xml,但我完全不知道从哪里开始


我可以构建xml,但如何发布它?我不能使用cURL库。

您可以使用file\u get\u contents()<必须在php.ini上设置code>allow\u url\u fopen

$context = stream_context_create(array('http'=>array(
    'method' => 'POST'
    'content' => $myXMLBody
)));
$returnData = file_get_contents('http://example.com/restfulapi', false, $context);
这是可能的,因为PHP使用自己的包装器抽象流操作。将上下文设置为流操作函数(如file_get_contents())允许您配置PHP如何处理它


参数不仅仅是
方法
内容
。您可以设置请求头、代理、处理超时等等。请参阅。

几天前我遇到了同样的问题,最终有人提出了这个解决方案,但不要使用$this->\u请求来获取post请求,因为它不适用于xml,至少在我的情况下是这样

$service_url1 = 'http://localhost/restTest/respond/';
$curl1 = curl_init($service_url1);
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, true);
$arr=array("key"=>$xml);
curl_setopt($curl1, CURLOPT_POST, 1);
curl_setopt($curl1, CURLOPT_POSTFIELDS,$arr);
echo $curl1_response = curl_exec($curl1);

curl_close($curl1);

你为什么不能用卷发?可能会有帮助。我需要这个脚本在许多服务器上运行,其中一些可能没有库,所以我不能依赖它。@JamWaffles好的,我可以使用cURL。我已经把一些东西放在一起了,但是现在我被困在分离http返回的头和xml返回上;curl_setopt($ch,CURLOPT_头,1);//标头将是输出curl_setopt的一部分($ch,CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);卷曲设置($ch,卷曲设置桩,1);curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type:text/xml'));curl_setopt($ch,CURLOPT_POSTFIELDS,“$xml_data”);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);我该如何将两者分开?我需要这个来检查我是否有错误。谢谢你的解决方案。这有助于我调用一个RESTAPI,它使用XML而不使用Guzzle(旧项目)。