Próbuję uruchomić żądanie HTTP w Swift, aby POST 2 parametry do adresu URL.
Przykład:
Połączyć: www.thisismylink.com/postName.php
Params:
id = 13
name = Jack
Jaki jest najprostszy sposób to zrobić?
Nie chcę nawet czytać odpowiedzi. Chcę tylko to wysłać, aby wykonać zmiany w mojej bazie danych za pomocą pliku PHP.
post
swift
parameters
http-post
httprequest
angeant
źródło
źródło
Odpowiedzi:
W Swift 3 i nowszych możesz:
Gdzie:
Sprawdza to zarówno podstawowe błędy sieci, jak i błędy HTTP wysokiego poziomu. To również poprawnie procent ucieka parametrom zapytania.
Zauważyć, że stosuje się
name
odJack & Jill
, aby zilustrować prawidłowegox-www-form-urlencoded
wynikuname=Jack%20%26%20Jill
, który jest „procent zakodowany” (to znaczy przestrzeń jest zastąpiony%20
i&
wartości otrzymuje się%26
).Zobacz poprzednią wersję tej odpowiedzi dotyczącą wersji Swift 2.
źródło
POST
prośbę, możesz skorzystać z powyższego.$_POST
i nazwy plików, zredukowałbym to do czegoś prostszego: skrypt PHP nie uruchomi się wcale, jeśli nie uzyskasz poprawnego adresu URL. Ale nie zawsze trzeba podać nazwę pliku (np. Serwer może wykonywać routing adresów URL lub mieć domyślne nazwy plików). W tym przypadku OP podał nam adres URL zawierający nazwę pliku, więc po prostu użyłem tego samego adresu URL co on.URLSession
pod tym względem. Wszystkie sieciowe interfejsy API są z natury asynchroniczne, tak jak powinny. Teraz, jeśli szukasz innych wdzięcznych sposobów radzenia sobie z żądaniami asynchronicznymi, możesz rozważyć ich zawinięcie (URLSession
żądania lub Alamofire) w asynchroniczną, niestandardowąOperation
podklasę. Możesz też użyć biblioteki obietnic, na przykład PromiseKit.Swift 4 i wyżej
źródło
Dla każdego, kto szuka czystego sposobu na zakodowanie żądania POST w Swift 5.
Nie musisz zajmować się ręcznym dodawaniem kodowania procentowego. Służy
URLComponents
do tworzenia adresu URL żądania GET. Następnie użyjquery
właściwości tego adresu URL, aby uzyskać poprawnie procentowy znak zapytania.query
Będzie właściwie uciekł ciąg:Teraz możesz utworzyć żądanie i użyć zapytania jako HTTPBody:
Teraz możesz wysłać zapytanie.
źródło
Oto metoda, której użyłem w mojej bibliotece logowania: https://github.com/goktugyil/QorumLogs
Ta metoda wypełnia formularze HTML w Formularzach Google.
źródło
application/x-www-form-urlencoded
ustawiaszźródło
źródło
Wszystkie odpowiedzi tutaj wykorzystują obiekty JSON. To dało nam problemy z
$this->input->post()
metodami naszych kontrolerów Codeigniter. NieCI_Controller
można odczytać JSON bezpośrednio. Użyliśmy tej metody, aby to zrobić BEZ JSONTeraz twój CI_Controller będzie mógł uzyskać
param1
iparam2
używać$this->input->post('param1')
oraz$this->input->post('param2')
źródło