2016-10-26 1 views
0

イムをタイムアウトになりました:+ WriteTimeout「ms.WriteTimeoutは」「System.InvalidOperationException」種類の例外をスローしたJSONシリアル化 - memoreストリームは、C#にJSONデータをシリアル化し、毎回それがメモリストリームに例外をスローしようとしている

をこれは、 XML

と同じことが、ここでのコードだん:

[DataContract] 
public class Svatek 
{ 
    [DataMember] 
    public string date { get; set; } 
    [DataMember] 
    public string name { get; set; } 
} 

、ここでは、方法

public async static Task<Svatek> GetDnesniSvatek() 
    { 
     var http = new HttpClient(); 
     var url = string.Format("http://svatky.adresa.info/json"); 
     var response = await http.GetAsync(url); 
     var result = await response.Content.ReadAsStringAsync(); 

     DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Svatek)); 
     MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(result)); 
     Svatek dnesniSvatek = new Svatek(); 
     dnesniSvatek = (Svatek)serializer.ReadObject(ms); 
     return dnesniSvatek; 
    } 
ですここでは、すべてのアドバイスのためのの

おかげ

+0

.....罰金働いている私は本当にNuGetからNewtonsoftパッケージあなたをお勧めします。 jsonのシリアライズとデシリアライズは一般的です。速い、簡単、動作 – Sebi

答えて

0

//は、あなたのサイトからのJSONが配列ある

// Create a request for the URL. 
    WebRequest request = WebRequest.Create(
     "http://svatky.adresa.info/json"); 
    // If required by the server, set the credentials. 
    request.Credentials = CredentialCache.DefaultCredentials; 
    // Get the response. 
    WebResponse response = request.GetResponse(); 
    // Display the status. 
    Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
    // Get the stream containing content returned by the server. 
    Stream dataStream = response.GetResponseStream(); 
    // Open the stream using a StreamReader for easy access. 
    StreamReader reader = new StreamReader(dataStream); 
    // Read the content. 
    string responseFromServer = reader.ReadToEnd(); 
    // Display the content. 

    Svatek myObjectSvatek = JsonConvert.DeserializeObject<Svatek>(responseFromServer); 


    // Clean up the streams and the response. 
    reader.Close(); 
    response.Close(); 
+0

[usingステートメント](https://msdn.microsoft.com/en-us/library)を使用しているにもかかわらず、それらを使用した後に 'reader'と' dataStream'で '.Dispose() /yh598w02.aspx)は、例外が発生しても破棄を処理するので、よりクリーンな可能性があります。 –

0

を必要exatclyものです。だからあなたのコードがか配列

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Svatek>)); 
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(result)); 

var list = (List<Svatek>)serializer.ReadObject(ms); 

リストにあなたのすべての他のコードをデシリアライズする必要があり

関連する問題