Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JSON nie zostaje wysłany metodą post
Forum PHP.pl > Forum > PHP
masa95
Witam. Mam problem. Ciąg danych zakodowanych json nie jest wysyłany. Szukałem troszkę nawet na zagranicznym forum lecz nic konkretnego co by moj problem rozwiazało nie znalazłem. O to wynik mojego skryptu:

Nagołwki zadania: Host = localhost
Accept = */*
Content-Type = application/json
Content-Length = 28

Zmienne przekazywane metoda GET: Brak
Zmienne przekazywane metoda… POST: Brak
Ciastka: Brak
Pliki: Brak

  1. <?php
  2.  
  3. $ch = curl_init('localhost/test/test.php');
  4. $data = array("name" => "Hagrid", "age" => "36");
  5. $data_string = json_encode($data);
  6.  
  7. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  8. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  10. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  11. 'Content-Type: application/json',
  12. 'Content-Length: ' . strlen($data_string))
  13. );
  14.  
  15. $result = curl_exec($ch);
  16. echo $result;
  17. ?>



I kod test.php
  1. <?php
  2. function showAll($aVars, $sTitle) {
  3. echo "$sTitle:\n";
  4. if (count($aVars) == 0) {
  5. echo " Brak\n";
  6. } else {
  7. foreach ($aVars as $name => $value) {
  8. echo " $name = $value<br/>";
  9. }
  10. }
  11. }
  12.  
  13. $headers = getallheaders();
  14. showAll($headers, 'Nagłówki żądania');
  15. echo'<br />';
  16. showAll($_GET, 'Zmienne przekazywane metodą GET');
  17. echo'<br />';
  18. showAll($_POST, 'Zmienne przekazywane metodą POST');
  19. echo'<br />';
  20. showAll($_COOKIE, 'Ciastka');
  21. echo'<br />';
  22. showAll($_FILES, 'Pliki');
  23. ?>



Z góry dziekuje bardzo za pomoc.
nospor
Wyslij POSTFIELDS jako normalną zwykła tablice i nie cuduj z zadnym JSONem ani jego naglowkami... przeciez to nie ma sensu... chcesz wyslac dane zwyklym POSTem to wyslij to zwyklym postem...
masa95
Tak. Masz racje gdybym tworzył serwis od postaw bym tak zrobił. Problem jest w tym ze dane mają być wysyłane do zewnetrznego serwisu. I muszą być nagłowki:
'Content-Type: application/json'
,' Content-Type: multipart/form-data;'
Bo inaczej wywala odrazu błąd 415 i w ciele wiadomości musi być ten json. I za bardzo nie moge znaleść jakich funkcji używać itd. Gdy w
  1. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

Jako $data_string jest ciąg znaków json. To wgl jak by tego nie wysyłał.
nospor
Nie gniewaj sie na mnie za bardzo, ale odnosze nieodparte wrażenie, że coś źle zrozumiałeś.

Napisz proszę dokładnie, co ci napisali w tym zewnetrznym serwerze, jakie oni dane przyjmują. Bo to co teraz Ty próbujesz tu sklecic nie trzyma sie żadnej kupy
masa95
To zaczne od początku.
Mam przesłać do serwara
- autoryzacje(login i hasło)
Content-Type = application/json
Content-Type = multipart/form-data

i w ciele zapytania do serwera ma iść json:
{"id":null,"cos":"cos"...}
Oczywiście metodą post dodawanie danych. Lub gdy dane mają być uaktualnione metodą put(osobna część serwisu-edycja danych). serwis z tego co mi wiadomo danych już nie sprawdza. Tylko je przyjmuje i zapisuje.
Pyton_000
w pliku test daj:
  1. var_dump(file_get_contents("php://input"));
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.