Visual Studio2008にてクライアントプログラムからWEBREQUESTを用いて
jsonファイルを取得するような仕組みを構築しました。
しかし、一部取得できないパターンがあり、おそらくjsonの文字数の多さが原因ではないかと思っておりますが解決方法がわかりません。
設定等の変更で取得する方法がありますでしょうか?
コードは下記になります。
C#
1 2 //文字コードを指定する 3 System.Text.Encoding enc = 4 System.Text.Encoding.GetEncoding("shift_jis"); 5 //WebRequestの作成 6 System.Net.WebRequest req = 7 System.Net.WebRequest.Create("http://localhost/json.php"); 8 //メソッドにGETを指定 9 req.Method = "GET"; 10 //ContentTypeを"application/x-www-form-urlencoded"にする 11 req.ContentType = "application/x-www-form-urlencoded"; 12 //サーバーからの応答を受信するためのWebResponseを取得 13 System.Net.WebResponse res = req.GetResponse(); 14 //↑res.ContentLengthが取得できていない時0になります。問題ないときはjsonの文字数が格納されてました。 15 16 //応答データを受信するためのStreamを取得 17 System.IO.Stream resStream = res.GetResponseStream(); 18 //受信して表示 19 System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.UTF8); 20 //sr.ReadToEndが文字数多いとnullになります。 21 TEST root = Newtonsoft.Json.JsonConvert.DeserializeObject<TEST>(sr.ReadToEnd());
jsonの格納されているURLは、ブラウザで確認すると問題なく表示されます。
他必要な情報がありましたらご連絡ください。
> 一部取得できないパターンがあり、おそらくjsonの文字数の多さが原因ではないかと思っておりますが
その、一部取得できないパターンとやらを明らかにするのが先決なのではないでしょうか。あと、そもそも、必ずHTTPステータス200(成功)で、かつコンテントボディ部にJSONが入っているのかどうか、とか。
ステータスはどのように取得すればよいでしょうか?
「//ContentTypeを"application/x-www-form-urlencoded"にする」とかもろもろ変ですが、そこはちょっと置いといて・・・
Fiddler などのツールを使って要求・応答をキャプチャして、問題ないときとダメな時を比較してください。そこにヒントが見つかるのではと思います。
他アプリのインストールが難しい環境なので、visualstudio2008内で完結できる方法を教えていただけますと幸いです。
それではまるで「闇夜に鉄砲」的な話で(当たらない・・・ここに書いてあること以外は知り得ない第三者には特に)難しいですね。Fiddler ぐらいインストールする許可を得てください。
>SurferOnWwwさん
許可は難しいので、ほかの方の回答を待ちたいと思います。
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー