我收到来自cURL请求的HTML表单回复

时间:2013-10-05 18:48:36

标签: php curl

我正在尝试连接外部服务器以获取作业。但是,我很困惑如何继续。我有以下代码:

$username = '****';
$password = '****';
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://****:9443/submitorder'); 
curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$password);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/xml"));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);
$result = curl_exec($ch); 
echo $result;

当我echo $result现在,我得到一个HTML表单:

This is the <code>$results</code> I get back from the cURL request:

我应该如何使用cURL POST到该表单?我需要上传一个自定义XML脚本,但正如我理解cURL,一切都是使用一个请求完成的。您在一个请求中连接,上载和接收响应。如何将我的数据导入此服务器?

我在$result收到的HTML如下:

<form enctype="multipart/form-data" method="post"> XML Order Envolope File: <input name="filename" type="file"> <input type="submit" value="Send"> </form>

1 个答案:

答案 0 :(得分:1)

要使用POST上传文件,请使用CURLOPT_POSTFIELDS选项:

  

<强> CURLOPT_POSTFIELDS

     

要在HTTP“POST”操作中发布的完整数据。

     

发布文件,   使用@添加文件名并使用完整路径。

     

文件类型可以是   通过跟随文件名中的类型明确指定   格式;type=mimetype

     

此参数可以作为a传递   urlencoded字符串,如para1=val1&para2=val2&...或数组   字段名称为键,字段数据为值。

     

如果value是一个数组,   Content-Type标题将设置为multipart / form-data。

示例

$ch = curl_init();

$data = array('filename' => '@C:/MyFile.xml');

curl_setopt($ch, CURLOPT_URL, 'http://yourserver/post.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);