1

我正在尝试与外部服务器连接以完成工作。但是,我对如何进行感到困惑。我有以下代码:

$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 请求返​​回的 <code>$results</code> :

我应该如何使用 cURL 发布到该表单?我需要向它上传一个自定义 XML 脚本,但据我了解 cURL,一切都是使用一个请求完成的。您在一个请求中连接、上传并收到响应。如何将我的数据输入此服务器?

我收到的 HTML$result如下:

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

4

1 回答 1

1

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

CURLOPT_POSTFIELDS

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

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

可以通过在文件名后面加上格式中的类型来显式指定文件类型;type=mimetype

此参数可以作为 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);
于 2013-10-05T18:53:24.847 回答