Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysłanie POST content type: application/xml
Forum PHP.pl > Forum > Przedszkole
d.stp
Muszę wysłać metodą POST (kontent type: application/xml) takie coś:

  1. <test>
  2. <a>test</a>
  3. <b>123</b>
  4. </test>


pod jakiś adres url, ale nie bardzo wiem jak to zrobić.
Wazniak96
1. Nie kontent a content facepalmxd.gif
2. Poczytaj o curl.
d.stp
Tak miałem w dokumentacji... biggrin.gif biggrin.gif

A nie da się jakoś inaczej? Mój serwer nie obsługuje CURLa, a zmiana serwera raczej odpada ;/
vonski
Możesz użyć file_get_contents w odpowiednim kontekście - stream_context_create. Do tego powinna przydać się jeszcze http_build_query.
d.stp
Jednak serwer obsługuje curla.

Mam takie coś:

  1. <?php
  2.  
  3. function post_xml($url, $xml) {
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_HEADER, 1);
  6. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  7. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  8. curl_setopt($ch, CURLOPT_URL, $url);
  9. curl_setopt($ch, CURLOPT_POST, 1);
  10. curl_setopt($ch, CURLOPT_POSTFIELDS, array('data' => $xml));
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12. curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
  13.  
  14. $result = curl_exec($ch);
  15. $info = curl_getinfo($ch);
  16. curl_close($ch);
  17. return $result;
  18. }
  19.  
  20. $xml = '<?xml version="1.0" encoding="UTF-8"?><a><b>aaa</b></a>';
  21.  
  22. $url = "https:/url/x/x/x";
  23. $result = post_xml($url, $xml);
  24. echo "<pre>"; print_r($result); echo "</pre>";
  25.  
  26. ?>


Próbowałem też z:

  1. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));


I w obu przypadkach:

Kod
HTTP/1.1 100 Continue

HTTP/1.1 404 Not Found
Date: Mon, 27 Jan 2014 19:40:40 GMT
Server: Apache
Content-Length: 110
Connection: close
Content-Type: text/plain

Could not find resource for relative :


Link jest na pewno dobry :/

Dodam jeszcze, że w dokumentacji jest tak napisane:

Kod
Dostęp do API (interfejsu REST) jest chroniony za pomocą basic-authorization. Przy wywoływaniu
wszystkich metod, należy podać login i hasło Partnera.
W celu rejestracji, należy wysłać metodą POST (kontent type: application/xml)
następujący XML:
pod adres: https://xx/x/x/x/
W przypadku prawidłowej rejestracji (kod HTTP 2xx), zwrotnie zostanie dostarczony XML:
Wazniak96
spróbuj tego wink.gif
  1.  
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  4. curl_setopt($ch, CURLOPT_URL, $url);
  5. curl_setopt($ch, CURLOPT_USERPWD, "login:haslo");
  6. $result = curl_exec($ch);
  7. curl_close($ch);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.