我正在尝试连接外部服务器以获取作业。但是,我很困惑如何继续。我有以下代码:
$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表单:
我应该如何使用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>
答案 0 :(得分:1)
要使用POST上传文件,请使用CURLOPT_POSTFIELDS
选项:
<强> CURLOPT_POSTFIELDS 强>
要在HTTP“POST”操作中发布的完整数据。
发布文件, 使用
@
添加文件名并使用完整路径。文件类型可以是 通过跟随文件名中的类型明确指定 格式
;type=mimetype
。此参数可以作为a传递 urlencoded字符串,如
para1=val1¶2=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);