PHP cURL ile yazılan XML verilerini https

0 Cevap php

Ben PHP kullanarak bir sunucuya XML veri ile bir HTTPS POST isteği göndermeye çalışıyorum.

Her şey sunucuya gönderir nedenle ben cURL kullanacağız kimlik doğrulaması gerektirir.

Bazı arka plan bilgisi:. XML veri yerel depolama belirli bir URL'den bir dosya yüklemek için sunucuyu talep etmektir.

Bu API kullanarak bir kural I application/xml her istek için içerik türünü ayarlayın zorunluluktur.

Bu ne yaptık ama çalışmıyor ...

<?php
$fields = array(
'data'=>'<n1:asset xmlns:n1="http://.....com/"><title>AAAA</title><fileName>http://192.168.11.30:8080/xxx.html</fileName><description>AAAA_desc</description><fileType>HTML</fileType></n1:asset>'
);
$fields_string = "";
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string,'&');

$url = "https://192.168.11.41:8443/";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "admin:12345678");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml', 'Content-length: '. strlen($fields_string)) );

$result = curl_exec( $ch );

curl_close($ch); 

echo $result;
?>

I am expected to get an XML reply of either upload successful or upload failed. But instead I am getting this error message.

HTTP/1.1 415 Unsupported Media Type Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=UTF-8 Content-Length: 0 Date: Thu, 02 Dec 2010 03:02:33 GMT

I'm sure the file type is correct, the XML format is correct. I've tried urlencode the fields but it didn't work. What else I might have done wrong?

0 Cevap