Salvați imaginea într-un fișier de pe o anumită adresă URL - stiva de preaplin în limba rusă

Am nevoie pentru a salva fișierul (în acest caz imaginea, dar, în general, orice) pentru URL-ul său. Eu fac o solicitare prin Xnet het.

Se returnează un obiect de răspuns din care datele pot fi obținute fie prin utilizarea unui ToStream ToString. Am încercat să facă acest lucru:







Dar, din moment ce în fișierul în loc de caracterul semnelor de întrebare dorite. Am înțeles că am primit datele ca un șir de caractere (dar de ce sunt ele distorsionate?). Și pentru a salva în format binar, este necesar să se utilizeze stream? În general, eu nu înțeleg destul în acest moment, spune-mi. Mulțumesc.

set 16 ianuarie '16 la 12:46

Problema ta este că utilizați API, care returnează un șir de caractere.

Imagine constă dintr-o secvență de octeți. Este o secvență de octeți și vine cu serverul. Orice decodare această secvență de octeți ca un șir de caractere - o greșeală, pentru că imaginea - acesta este un binar, mai degrabă decât formatul de text.







Aruncati o privire la ceea ce se întâmplă cu imaginea în program.

  1. Pe server vine un set de octeți
  2. Undeva este convertit într-un șir de caractere folosind codificarea 1
  3. Apoi șirul este convertit într-o secvență octet folosind o codificare 2
  4. Secvența rezultată de octeți scrise la dosar.

Ar trebui să fie evident că, în cazul în care codificarea 1 și 2 nu sunt la fel - în coșul de gunoi vor fi înregistrate fișier. În decizia sa, ați rezolvat problema prin specificarea aceeași codificare în etapele 2 și 3. Cu toate acestea, dreptul acestui program nu a făcut-o.

De exemplu, dacă în etapa 2 va scădea o secvență de octeți, care nu este un caracter valid - acesta va fi transformat într-o „întrebare“ și în pasul 3, întrebarea pentru că va fi imposibil de a converti înapoi.

Soluția corectă ar fi să arunce pașii 2 și 3 nafig. Și pentru aceasta este necesar să se renunțe la utilizarea de rânduri pentru a reveni Web.GetRequest

Iată codul, care nu face nici o schimbare inutile:

Sau ca acest lucru (pentru un fișier nu are rost, am citat ca un exemplu de lucru cu fluxul):

Și poate obține întreaga matrice de octeți, dacă este necesar: