Potrzebuję danych JSON z domeny zewnętrznej. Użyłem zapytania internetowego, aby uzyskać odpowiedź ze strony internetowej. Oto kod:
var request = WebRequest.Create(url);
string text;
var response = (HttpWebResponse) request.GetResponse();
using (var sr = new StreamReader(response.GetResponseStream()))
{
text = sr.ReadToEnd();
}
Czy ktoś wie, dlaczego nie mogę uzyskać danych JSON?
c#
.net
json
webrequest
h3n
źródło
źródło
using (var response = request.GetResponse()){ ... }
. Może nie rozwiązać problemu, ale oszczędza wyciek zasobów.Odpowiedzi:
Musisz wyraźnie zapytać o typ zawartości.
Dodaj tę linię:
W odpowiednim miejscurequest.ContentType = "application/json; charset=utf-8";
źródło
Accept
nagłówka, ale serwer może to zignorować z innych powodów.Niektóre interfejsy API wymagają podania odpowiedniego nagłówka „Accept” w żądaniu, aby uzyskać żądany typ odpowiedzi.
Na przykład, jeśli interfejs API może zwracać dane w formacie XML i JSON, a chcesz otrzymać wynik w formacie JSON, musisz ustawić
HttpWebRequest.Accept
właściwość na „application / json” .HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri); httpWebRequest.Method = WebRequestMethods.Http.Get; httpWebRequest.Accept = "application/json";
źródło
requestUri
tj. Localhost / api / product / 123WebRequest
stackoverflow.com/questions/3279888/ ...