Używam polecenia curl, aby wysłać duży plik (100 + MB) do usługi sieciowej. Zauważam, że tylko wtedy, gdy wyślę plik do usługi sieciowej za pomocą curl plik zostanie zmanipulowany i dane zostaną utracone.
Oto polecenie, którego używam do wysłania pliku:
curl -v --raw -X POST -H "Transfer-Encoding: chunked" -H "Content-Type: text/xml; charset=utf-8" -d @medline16n0736.xml "http://localhost:2323/TestWebService"
Czy czegoś brakuje? Myślałem, że muszę to powiedzieć text/xml
i charset=utf-8
utrzyma go utf-8 raz odebrany przez serwis internetowy.
Odpowiedzi:
1 dla odpowiedzi № 1Pytasz curl, aby opublikować plik XML za pomocą -d
opcja, która opublikuje plik tak, jakby był przesyłany za pośrednictwem formularza internetowego HTTP application/x-www-webform-urlencoded
format. Aby opublikować plik samodzielnie, użyj znaku -T
zamiast tego opcja. Ponadto używasz --raw
opcja, która wyłączy obsługę kodowania transferu HTTP, nawet jeśli wysyłasz wiadomość Transfer-Encoding: chunked
nagłówek. Usunąć --raw
i -T
wykryje nagłówek, aby włączyć chunking.
Pytasz także curl, aby wysłać wiadomość Content-Type
nagłówek informujący WebService, że przesłane dane są zakodowane w formacie utf-8. Twoim obowiązkiem jest upewnić się, że plik XML jest tak właściwie kodowane utf-8. Curl nie sprawdzi tego dla ciebie.