Arkadaşlar kolay gelsin,

PHP ile WSDL servislere veri göndermek istiyorum. Daha önce çok veri gönderme-alma işlemi yaptım ancak bu konuda takıldım işin içinden çıkamadım.

Gönderilecek veri "Content-type: multipart/form-data" olarak kabul ediliyor.
3 tane değer göndermemiz gerekiyor.
1- appkey
2- appsecret
3- data

appkey ve appsecret değerleri content-type: text/plain
data ise content-type: application/xml

değerinde olması gerekiyor. rest-client isimli araçla veri gönderdiğimde düzgün cevap alıyorum, ancak cURL ile post ettiğimde data kısmını görmüyor. yani array oluşturduğumda hepsini text/plain olarak alıyor.

Örnek: Curl ile gönderdiğimiz postfields'a

$postfields = array(
"appkey" => $appkey,
"appsecret" => $appsecret,
"data" => $xml
);

Soap kullanmayı bilmiyorum ancak baya araştırdım soap ile wsdl servisleri çok sorun yaratıyormuş.

Boundary diye bir şeylerden bahsediyorlar ancak daha önce hiç ihtiyacım olmadığından araştırmadım

Bana yardım edebilecek birileri var mı aynı sorunu yaşayan?

--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 01:32:04 -->-> Daha önceki mesaj 00:39:06 --

Bir adım daha yaklaşıyorum.
Header kısmına: Content-Type multipart/form-data; boundary=7ZAUH3KVUpvXgwagBLkB4v7r84QBpj0TxAvNF
tanımlamak gerekiyormuş.

bu durumda boundary post etmeyi bilen var mı?

--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 01:59:05 -->-> Daha önceki mesaj 01:32:04 --

Burası uğurlu geliyor ne zaman yazsam cevabını buluyorum

Bu sorunla karşılaşan arkadaşlar varsa cURL ile post ederken 2 şeye dikkat edin.
1- header kısmını oluşturuyoruz.

$headers= array(
"Host: api.x.com",
"Content-Type: multipart/form-data; boundary=7ZAUH3KVUpvXgwagBLkB4v7r84QBpj0TxAvNF",
"User-Agent: Apache-HttpClient/4.2.1 (java 1.5)",
"Content-Length: " . strlen($boundary), // burada boundary data nın uzunluğunu tanımlıyoruz.
"Connection: Keep-Alive"
);

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // buraya oluşturulan header ı giriyoruz.

2- BOUNDARY KISMI
$boundary= '--7ZAUH3KVUpvXgwagBLkB4v7r84QBpj0TxAvNF
Content-Disposition: form-data; name="appsecret"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

DATADATADATAAAAAA
--7ZAUH3KVUpvXgwagBLkB4v7r84QBpj0TxAvNF
Content-Disposition: form-data; name="appkey"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

DATA2DATA2DATATDTAATADATA2
--7ZAUH3KVUpvXgwagBLkB4v7r84QBpj0TxAvNF--';


çözüm bu kadar, yapamayan olursa mesaj atsın yardımcı oluruz
sanırım cURL ile yapamayacağımız hiç bir şey yok.