如何使用Laravel将带有Guzzle的XML POST请求发送到Web服务API?

埃德蒙

我正在尝试使用Laravel Guzzle Http客户端将请求发布到Web API。但是,尝试发布请求时遇到错误。我要发送的数据是XML,因为API控制器以XML返回格式构建。

我已经尝试过各种方法来用Guzzle发布请求,但该请求尚未起作用。

public function createProperty(Request $request)
 {
    $client = new Client();

    $post = $request->all();


    $create = $client->request('POST', 'http://127.0.0.1:5111/admin/hotel', [
        'headers' => [
            'Content-Type' => 'text/xml; charset=UTF8',
        ],
        'form-data' => [
           'Name'           => $post['hotel_name'],
           'Address'        => $post['address'],
           'Phone'          => $post['phone'],
           'Email'          => $post['email'],
           'Website'        => $post['website'],
           'Latitude'       => $post['latitude'],
           'Longitude'      => $post['longitude'],
           'Tags'           => $post['tags'],
           'Priority'       => $post['priority'],
           'Visible'        => $post['visible'],
           'Stars'          => $post['stars'],
           'Description'    => $post['description'], 
           'Facilities'     => $post['facilities'],
           'Policies'       => $post['policies'],
           'ImportantInfo'  => $post['important_info'],
           'MinimumAge'     => $post['minimum_age']
       ]                            
    ]);
    //dd($create->getBody());

    echo $create->getStatusCode();
    echo $create->getHeader('content-type');
    echo $create->getBody();
    $response = $client->send($create);

    $xml_string = preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $create->getBody());
    $xml_string = $create->getBody();
    //dd($xml_string);
    $hotels = simplexml_load_string($xml_string);

    return redirect()->back();
}

我希望将结果发布到Web服务并将数据保存到数据库,但是却收到错误消息“客户端错误:POST'http: //127.0.0.1 :5111/ admin/hotel '导致了'400错误请求'响应,请在正文中提供有效的XML对象

尼拉·沙(Niraj Shah)

而不是post-data在耗时的请求中使用,您需要使用body

$create = $client->request('POST', 'http://127.0.0.1:5111/admin/hotel', [
    'headers' => [
        'Content-Type' => 'text/xml; charset=UTF8',
    ],
    'body' => $xml                         
]);

$xml将是您要发送到API的XML数据。Guzzle不会为您创建XML数据,您需要自己做。

可以使用DomDocument PHP中创建XML数据

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java Unirest将带有空JSON的POST请求发送到在localhost上运行的服务器,但是将相同的请求发送到云服务器时工作正常吗?

使用SAP Cloud SDK版本3.2.0将POST请求发送到OData服务

具有自定义标头的Ajax请求发送到启用了CORS的Web API服务器

使用Ajax POST请求将图像和JSON数据发送到服务器?

无法使用Java将POST请求中的ArrayList发送到REST服务器

Symfony2将POST请求发送到外部API并解析其XML响应?

使用请求通过http发布将字节数组发送到Web服务

我的Web服务器如何将Web请求发送到IoT设备?

通过HTTP POST将带有主题的消息发送到Azure服务总线队列?

使用put / post将数据发送到Laravel中的Web服务

如何在Vapor中将POST请求发送到Firebase Cloud Messaging API

使用React JS和Laravel将带有图像文件的POST请求发送到数据库时出现内部服务器错误

如何在Ionic Framework中将SOAP请求发送到Web服务?

将带有正文的请求发送到AWS Lambda

如何使用ClusterIP服务将Lambda的GET / POST请求发送到Pod

如何读取/处理在POST请求中发送到Flask API的音频文件?

如何将带有无服务器框架的AWS Lambda的查询请求发送到AppSync GraphQL API?

如何使用python通过POST请求将带有元数据(标题,描述)的媒体发送到WordPress REST API

如何使用Objective-C将HTTP POST请求发送到PHP服务

使用Volley库的StringRequest类将Unicode请求发送到Web服务

如何检查POST请求是否以JSON Web服务发送到服务器

将带有发布请求的xml发送到IIS上的WCF服务

通过带有cURL的HTTP Post将XML字符串发送到Web服务

如何将请求从Web服务器发送到android?

使用apache Camel将SOAP请求发送到远程Web服务并获得响应

使用 Java 将 Cucumber.json 文件发送到 Jira 的 Rest API post 请求

将带有 POST 请求的文件发送到 TelegramBot

如何使用 POST 请求(本机反应)将字符串发送到 Web 服务?

使用带有 jQuery 的 POST 请求将数据发送到服务器