レスポンスが返ってこない
- C#のHttpWebRequestでログインページにpostしてログオンしていますが、レスポンスがない場合があります。
- ContentTypeもapplication/x-www-form-urlencodedで送信していますが、レスポンスのStreamを全く返さないページが存在するのでしょうか?
- また、ログインのpost方法以外に他の方法が存在するのでしょうか?
- ベストアンサー
レスポンスが全く返ってこない
C# の HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strURL); でログインページにpostしてログオンしていますが、 たいていのページは HttpWebRequest でレスポンスが返ってくるのですが、 レスポンスがなし\"\"の場合があります。 ContentTypeもapplication/x-www-form-urlencoded で送信してるし、 たいていのページはこれでいけています。(ちょっと自身アリ) レスポンスのStreamを全く返さないページってありうるのでしょうか? (ブラウザではログインできます) (レスポンスのパラメータをチェックしましたが、リダイレクトらしきURLもなし) それともpost方法自体他の方法がある?? 漠然とした質問ですいません。
- ENTRE
- お礼率0% (16/2523)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- C#でHP上の特定データを自動更新で抽出したい
ブラウザを立ち上げることなくHPに自動ログイン後、特定の表示データを抽出してリアルタイムに更新表示させたい(ブラウザでは更新ボタンのクリックが必要)。 ニコニコ動画の自動ログイン方法が公開されていますのでそれを真似て下記のプログラムを作成し、見かけ上は正常に動作していますが、これって「GetHtml」を呼ぶ度にログイン → ログアウトを繰り返すのでしょうか? もし、そうであればそれの回避方法を教えて頂けないでしょうか。(.Close()を呼ばないとか?) また、その確認方法があれば併せてお願いします。 /// ログイン (起動時1回のみ呼び出し) public bool LogIn() { Hashtable hash = new Hashtable(); hash["username"] = "name"; hash["password"] = "123"; hash["Login"] = "login"; string s_param = ""; foreach (string s in hash.Keys) { s_param += string.Format("{0}={1}&", s, hash[s]); } HttpPost("Https", s_param); } /// POST送信 public void HttpPost(string s_url, string s_param) { httpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(s_url); CookieContainer cookieContainer = new CookieContainer(); httpWebRequest.CookieContainer = cookieContainer; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; byte[] data = Encoding.ASCII.GetBytes(s_param); httpWebRequest.ContentLength = data.Length; httpWebRequest.Method = "Post"; Stream reqStream = httpWebRequest.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); WebResponse webResponse = httpWebRequest.GetResponse(); Stream resStream = webResponse.GetResponseStream(); encoder = Encoding.GetEncoding("Shift_JIS"); StreamReader streamReader = new StreamReader(resStream, encoder); spHtml = streamReader.ReadToEnd(); streamReader.Close(); webResponse.Close(); } /// HTML受信(タイマーイベントで常時呼び出し) private string GetHtml(string s_url) { httpWebRequest = (HttpWebRequest)WebRequest.Create(s_url); httpWebRequest.CookieContainer = cookieContainer; webResponse = httpWebRequest.GetResponse(); Stream resStream = webResponse.GetResponseStream(); StreamReader streamReader = new StreamReader(resStream, encoder); string Html = streamReader.ReadToEnd(); streamReader.Close(); resStream.Close(); return Html; }
- 締切済み
- C・C++・C#
- C#でストリームの保存の仕方
以下のコードのストリームstの保存を行いたいのですが、Streamのインスタンスをnewで作れないので どのようにすればよいでしょうか。お願いします。 HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create("http://www.***.co.jp"); HttpWebResponse webres = (HttpWebResponse)webreq.GetResponse(); Stream st = webres.GetResponseStream();
- ベストアンサー
- その他(プログラミング・開発)
- C#でのWebRequestでのPOSTについて
C#初心者です。 現在Visual Studio2012にてC#でストアアプリ作成中ですが、サーバーへPOSTしリストを取得する処理で難航しています。 WebRequest request = WebRequest.Create("URL"); request.Method = "POST"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; と記述した場合にrequest.ContentLengthの箇所でContentLengthはSystem.Net.WebRequestに定義が含まれていませんとエラーが表示されます。 何が足りないのでしょうか? 何か追加のアセンブリを指定する必要がありますでしょうか?
- ベストアンサー
- C・C++・C#
- サイトのデータ(HTML)を取得
C#で WebRequest webreq = (HttpWebRequest)WebRequest.Create(strURL); webreq.Timeout = 10000; HttpWebResponse webres = (HttpWebResponse)webreq.GetResponse(); でサイトのデータ(HTML)を取得しているのですが、 サイトによっては1ページ全部取得できない場合があります。 しかしブラウザで見ると全部表示され、 そのソースをみても全部表示されています。 なぜC#のRequestで取得した場合には、 ソースが途切れる場合があるのでしょうか? 取得中タイムとかの設定があるのでしょうか? よろしくお願いします。
- ベストアンサー
- Microsoft ASP
- フォト蔵へアップロードできません(C#)
フォト蔵へアップロードするとエラー400が出てしまいます。 何が原因なのでしょうか?原因を教えてください。 以下コード //フォト蔵へのアップロード(注意動きません)// //送信するファイルのパス filePath="C:\\Users\\Public\\Pictures\\Sample Pictures\\test.jpg"; //送信先のURL string url1 = "http://api.photozou.jp/rest/photo_add"; //文字コード System.Text.Encoding enc = System.Text.Encoding.GetEncoding("UTF-8"); //WebRequestの作成 System.Net.HttpWebRequest req = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(url1); //メソッドにPOSTを指定 req.Method = "POST"; //ベーシック認証宣言、アカウントとパスワード req.PreAuthenticate = true; NetworkCredential network = new NetworkCredential("mailaddress@hoge.com", "password"); req.Credentials = network; //ヘッダを設定 req.Headers.Add("album_id", "1234567"); //ContentTypeを設定 req.ContentType = "image/jpeg"; //POST送信するデータを作成 System.IO.FileStream fs = new System.IO.FileStream( filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read); //POST送信するデータの長さを指定 req.ContentLength = fs.Length; //データをPOST送信するためのStreamを取得 System.IO.Stream reqStream = req.GetRequestStream(); //ファイルの内容を送信 byte[] readData = new byte[0x1000]; int readSize = 0; while (true) { readSize = fs.Read(readData, 0, readData.Length); if (readSize == 0) break; reqStream.Write(readData, 0, readSize); } fs.Close(); reqStream.Close(); //サーバーからの応答を受信するためのWebResponseを取得 System.Net.HttpWebResponse res = (System.Net.HttpWebResponse) req.GetResponse(); //応答データを受信するためのStreamを取得 System.IO.Stream resStream = res.GetResponseStream(); //受信 System.IO.StreamReader sr = new System.IO.StreamReader(resStream, enc); //閉じる sr.Close();
- 締切済み
- C・C++・C#
- POSTリクエストの投げ方
ASP.NET(c sharp)、.netフレームワーク2.0環境です。 認証(ベーシック認証)付きのREST APIを使いたいのですが、 リクエストの投げ方が理解できず困っています。 URLを指定してリクエストを投げると動くものなのですが…。 使い方としては、 ・POSTリクエストを使用 ・"item"をキーにして、対象になるURLの配列を指定 とのことです。 { "item" : [ "http://www.yahoo.co.jp/test1.jpg", "http://www.google.co.jp/test2.jpg" ] } ↑サンプルとして載っていました 以下の通り作ってみましたが、うまく動きません。 URLの配列指定がうまく出来ていないのではないかと思うのですが、 方法を教えていただけないでしょうか。 宜しくお願いします。 //HttpWebRequestの作成 WebRequest webreq = WebRequest.Create("https://api.test.com"); webreq.Method = "POST"; //認証の設定 webreq.Credentials = new System.Net.NetworkCredential("test@test.com", "testpass"); //POSTするデータ string postData = "item=http://www.yahoo.co.jp/test1.jpg"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); webreq.ContentType = "application/json"; webreq.ContentLength = byteArray.Length; Stream dataStream = webreq.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); WebResponse response = webreq.GetResponse(); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close();
- ベストアンサー
- Microsoft ASP
- VB2003でファイルのダウンロードについて教えて
Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest) Dim res As WebResponse = req.GetResponse() Dim resStream As Stream = res.GetResponseStream() Dim fs As New System.IO.FileStream(SaveName, FileMode.Create, FileAccess.Write) Dim b As Integer While True b = resStream.ReadByte() If b = -1 Then Exit While fs.WriteByte(Convert.ToByte(b)) End While VB.NET2003ですが上記の方法でファイルをダウンロードしているのですが、 ブラウザで表示して転送される場合は30秒ほどなのですが、 この方法でダウンロードすると130秒くらいかかってしまいます。 ディスクに書き込む動作が足を引っ張っているのかと思って 下から2行目を消して計測してみたのですがそれでも10秒ほどしか短縮しませんでした。 タスクマネージャーで確認してもCPUリソースが50をずっと超えているのですが ブラウザなどでダウンロードする時のように高速でCPUに負担をかけずにダウンロードするには どんな方法でやれば良いでしょうか? よろしくお願い致します。
- ベストアンサー
- Visual Basic
- twitterAPIについて
twitterAPIについて です。 今Visual Studio 2008でC#.NETでtwitterのタイムラインを読み込んでみようと思っています。 xmlを読み込むまではできましたが、 そのxmlを抽出する方法が全く分かりません。 このさきどうすればいいのでしょうか? ユーザー1:ツイート ユーザー2:ツイート といった感じにTextBoxに並べるのが目標です。 文字列をxmlに変換する方法があるのでしょうか? 一応ソースコードを載せて起きます。(using部分、例外処理などは除く) private void XmlLoad() { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://twitter.com/statuses/home_timeline.xml"); request.Credentials = new NetworkCredential(IDtext.Text, passText.Text); request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; request.Timeout = 10000; System.Net.ServicePointManager.Expect100Continue = false; WebResponse response = request.GetResponse(); Encoding enc = Encoding.GetEncoding(932); StreamReader reader = new StreamReader(response.GetResponseStream(), enc); string result = reader.ReadToEnd(); result = System.Web.HttpUtility.HtmlDecode(result); resultText.Text = result; reader.Close(); response.Close(); } private void OK_Click(object sender, EventArgs e) { XmlLoad(); } オブジェクト(TextBoxなど)は、 IDText(TextBox) passText(TextBox) OK(Button) resultText(TextBox) です! わかる方お願いします。 質問があれば答えます。
- ベストアンサー
- C・C++・C#
- HTTPSのサイトからのダウンロード方法
HTTPSのサイトにアクセスしてブラウザではなくテキストで表示させるにはどうすればいいのでしょうか? 通常のHTTPのサイトからは下記のコードで動作するようになりました。 これでHTTPSのサイトにアクセスしても返事が返ってきません。 今アクセスしようとしているページはまだユーザー名、パスワードが不用なページです。 ブラウザで表示させれば問題なく表示されます。 ご存知の方は教えて下さい。 [サンプルコード] Private Sub btnConnect_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles btnConnect.Click 'HttpWebRequestの作成 Dim strURL As String txtResponce.Text = "" txtResponce.Refresh() If Me.rbULR1.Checked Then strURL = txtURL1.Text Else strURL = txtURL2.Text End If Dim webreq As System.Net.HttpWebRequest = _ CType(System.Net.WebRequest.Create(strURL), _ System.Net.HttpWebRequest) 'サーバーからの応答を受信するためのHttpWebResponseを取得 Dim webres As System.Net.HttpWebResponse = _ CType(webreq.GetResponse(), System.Net.HttpWebResponse) '文字コードを指定する Dim enc As System.Text.Encoding = _ System.Text.Encoding.GetEncoding(932) '応答データを受信するためのStreamを取得 Dim st As System.IO.Stream = webres.GetResponseStream() Dim sr As New System.IO.StreamReader(st, enc) '受信して表示 Me.txtResponce.Text = sr.ReadToEnd() '閉じる sr.Close() End Sub
- ベストアンサー
- Visual Basic
- 公開鍵暗号化方式のページと通信
C#側から 公開鍵暗号化方式を採用しているサイトまたはページに クライアント側からログインまたは記事を投稿したいのですが、 WebRequestやhttpWebRequestを使って 通信することは可能でしょうか? 公開鍵情報をC#側に組み込まないといけないのでしょうか? よろしくお願いします。
- ベストアンサー
- Microsoft ASP