簡體   English   中英

如何使用php curl將xml文件內容發送到webservice

[英]How to send xml file content to webservice using php curl

我有一個需要發送到webservice的datafile.xml。 我正在使用php curl發送文件。 問題是我不知道如何訪問和發送datafile.xml的內容。

這是datafile.xml的內容 -

<?xml version="1.0" encoding="ISO-8859-1"?>
<inventoryUpdateRequest version="1.0">
<action name="bookupdate">
<username>user</username>
<password>issecret</password>
</action>
<WebList>
<Website>
<transactionType>delete</transactionType>
<vendorBookID>FaNuPh1</vendorBookID>
</Website>
</WebList>
</inventoryUpdateRequest>

這是我發送的php文件 -

<?php require_once('post_xml.php');?>
<?php 

$xml = HERE IS MY LACK OF UNDERSTANDING HOW TO EXTRACT datafile.xml CONTENT;

$url ='https://inventoryupdate.website.com';
$port = 80;
$response = xml_post($xml, $url, $port);    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<P><?=nl2br(htmlentities($response));?></P>
</body>
</html>

這是使用cURL的post_xml.php文件 -

<?php
// open a http channel, transmit data and return received buffer
function xml_post($post_xml, $url, $port)
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];

$ch = curl_init();    // initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);              // Fail on errors

if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off'))
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_PORT, $port);          //Set the port number
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_xml); // add POST fields
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

if($port==443)
{
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
}

$data = curl_exec($ch);

curl_close($ch);

return $data;
}
?>

任何幫助將非常感激!

如果您不需要解析XML文件,那么我建議使用fopen()file_get_contents()

為簡單起見,假設datafile.xml位於同一目錄中,請嘗試:

$xml = file_get_contents('datafile.xml');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM