-1

我已使用此代码从服务器获取数据,`$server = 'LOCALHOST:9000';

$headers = array(
"Content-type: text/xml"
,"Content-length: ".strlen($requestXML)
,"Connection: close"
);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$data = curl_exec($ch);



if(curl_errno($ch)){
    print curl_error($ch);
    echo "  something went wrong..... try later";
}else{
echo " request accepted";
    print $data;
    curl_close($ch);
}`

现在我必须做反向,如何使用 php 将数据发送到服务器?curl 方法是唯一的方法,或者是否有任何其他方法可以做到这一点。给我举个例子。

4

1 回答 1

0

使用 cURL 发送/接收是完全相同的事情。cURL 基于向给定 URL 发送数据并可能接收响应。我们举一个获取用户和发送用户的简单例子。

获得用户将是

$data = array(
  'user_id' => 1
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.site.com/getUser.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
  • getUser.php 只是搜索用户并返回找到的数据。
  • $response 可能包含用户的数据,可能只是包含名称的文本响应。一个序列化的 PHP 数组,一个带有完整用户配置文件的 XML 响应……等等。

插入/发送数据

$data = array(
  'user_name' => 'Joshua',
  'user_email' => 'my@email.com'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.site.com/addUser.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
  • addUser.php 对字段进行一些验证,如果验证,则在数据库中插入用户
  • 在这种情况下,$response 不包含用户数据(但是:有可能),但 $response 更有可能包含结果。一个ok文本响应、一个 json/xml 响应或者可能是一个“200 OK”标头响应

基本上都是一样的。使用 cURL 获取/发送数据没有区别。这一切都基于发送请求,并且在大多数情况下对结果做一些事情。

于 2013-03-30T13:01:24.083 回答