Visual C++ / C++/cliのHTTPクライアントを作成しているが、
うまくいかないURLがあります。
■概要
「http://a.com」へアクセスしてレスポンスbodyを見ると、
文字化けした文字が1文字のみ(�)入っていて、正常にHTMLを取得できません。
なお「http://b.com」「http://c.com」などの他サイトの場合、正常にHTMLを取得できます。
■質問事項
上記が発生する原因と対策をご教授下さい。
Visual C++ / C++/cliのHTTPクライアント [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/12/12(土) 15:37:36.43ID:Tj9TliY52デフォルトの名無しさん
2015/12/12(土) 15:38:15.27ID:Tj9TliY5 ■環境
Microsoft Visual Studio Community 2013 Update 4
Visual C++ / C++/cli
Windows8.1
Microsoft Visual Studio Community 2013 Update 4
Visual C++ / C++/cli
Windows8.1
3デフォルトの名無しさん
2015/12/12(土) 15:39:22.32ID:Tj9TliY5 ■ソースコード
●クラス定義
public ref class HTTP{
private:
HttpWebRequest^ req;
HttpWebResponse^ res;
Encoding^ enc;
Stream^ st;
StreamReader^ sr;
public:
HttpStatusCode return_statuscord;
WebHeaderCollection^ return_header;
String^ return_body;
●クラス定義
public ref class HTTP{
private:
HttpWebRequest^ req;
HttpWebResponse^ res;
Encoding^ enc;
Stream^ st;
StreamReader^ sr;
public:
HttpStatusCode return_statuscord;
WebHeaderCollection^ return_header;
String^ return_body;
4デフォルトの名無しさん
2015/12/12(土) 15:40:26.34ID:Tj9TliY5 HTTP(String^ url,String^ referer,int timeout_second,int enc_classification,CookieContainer^ cc,bool aar_flag,int ua_classification,NetworkCredential^ credent){
req = (HttpWebRequest^)WebRequest::Create(url);
req->Timeout = timeout_second * 1000;
req->CookieContainer = cc;
req->Accept = "text/html, application/xhtml+xml, */* ";
if(referer!=""){
req->Referer = referer;
}
req->Headers->Add("Accept-Language", "ja-JP");
req->Headers->Add("Accept-Encoding", "gzip, deflate");
req->KeepAlive = true;
req->AllowAutoRedirect = aar_flag;
req->Credentials = credent;
if(ua_classification == 1){
req->UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
}
else{
req->UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
}
if(enc_classification == 1){
enc = Encoding::GetEncoding("utf-8");
}
else if(enc_classification == 2){
enc = Encoding::GetEncoding("Shift_JIS");
}
else if(enc_classification == 3){
enc = Encoding::GetEncoding("euc-jp");
}
else{
enc = Encoding::GetEncoding("utf-8");
}
}
req = (HttpWebRequest^)WebRequest::Create(url);
req->Timeout = timeout_second * 1000;
req->CookieContainer = cc;
req->Accept = "text/html, application/xhtml+xml, */* ";
if(referer!=""){
req->Referer = referer;
}
req->Headers->Add("Accept-Language", "ja-JP");
req->Headers->Add("Accept-Encoding", "gzip, deflate");
req->KeepAlive = true;
req->AllowAutoRedirect = aar_flag;
req->Credentials = credent;
if(ua_classification == 1){
req->UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
}
else{
req->UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
}
if(enc_classification == 1){
enc = Encoding::GetEncoding("utf-8");
}
else if(enc_classification == 2){
enc = Encoding::GetEncoding("Shift_JIS");
}
else if(enc_classification == 3){
enc = Encoding::GetEncoding("euc-jp");
}
else{
enc = Encoding::GetEncoding("utf-8");
}
}
5デフォルトの名無しさん
2015/12/12(土) 15:40:47.63ID:Tj9TliY5 bool GET(){
try{
req->Method = "GET";
res = (HttpWebResponse^)req->GetResponse();
return_statuscord = res->StatusCode;
return_header = res->Headers;
st = res->GetResponseStream();
sr = gcnew StreamReader(st, enc);
return_body = sr->ReadToEnd();
sr->Close();
st->Close();
}catch(Exception^ ex){
ex;
return false;
}
return true;
}
};
try{
req->Method = "GET";
res = (HttpWebResponse^)req->GetResponse();
return_statuscord = res->StatusCode;
return_header = res->Headers;
st = res->GetResponseStream();
sr = gcnew StreamReader(st, enc);
return_body = sr->ReadToEnd();
sr->Close();
st->Close();
}catch(Exception^ ex){
ex;
return false;
}
return true;
}
};
6デフォルトの名無しさん
2015/12/12(土) 15:42:44.40ID:Tj9TliY5 ●実行本文
CookieContainer^ main_cookies = gcnew CookieContainer();
//トップページ表示
HTTP^ http = gcnew HTTP("http://a.com/" , "" , 30 , 1, main_cookies , true , 1 , gcnew NetworkCredential());
if( http->GET() ){
デバック表示関数(http->return_body + " " + http->return_header + " " + http->return_statuscord.ToString() + "\n");
//★↑この表示が 文字化けした文字1文字のみ(�)となる http->return_headerとhttp->return_statuscordは空NULL★
}
CookieContainer^ main_cookies = gcnew CookieContainer();
//トップページ表示
HTTP^ http = gcnew HTTP("http://a.com/" , "" , 30 , 1, main_cookies , true , 1 , gcnew NetworkCredential());
if( http->GET() ){
デバック表示関数(http->return_body + " " + http->return_header + " " + http->return_statuscord.ToString() + "\n");
//★↑この表示が 文字化けした文字1文字のみ(�)となる http->return_headerとhttp->return_statuscordは空NULL★
}
7デフォルトの名無しさん
2015/12/12(土) 15:43:26.19ID:Tj9TliY5 大変困っています。どなかたご教授頂きますよう、
お願い申し上げます。
お願い申し上げます。
2015/12/12(土) 15:48:46.69ID:iI1oyV8R
>>1
単発質問スレを立てるな
単発質問スレを立てるな
9デフォルトの名無しさん
2015/12/12(土) 16:49:51.51ID:Tj9TliY52015/12/12(土) 17:44:33.15ID:bGGVK1E5
馬鹿には無理
11デフォルトの名無しさん
2015/12/12(土) 23:55:50.12ID:Tj9TliY5 どなたか分かる方はいらっしゃらないでしょうか
2015/12/13(日) 00:01:09.92ID:G+bJpCOE
マルチポストのマナーぐらい守ろうな
初心者ならC++/CLIなんて使うな
初心者ならC++/CLIなんて使うな
13デフォルトの名無しさん
2015/12/13(日) 00:04:29.64ID:Wcw8JgGx >>12
なら解決方法をご教授いただけますでしょうか。
なら解決方法をご教授いただけますでしょうか。
14デフォルトの名無しさん
2015/12/13(日) 00:05:59.64ID:JyGG1Hej うちのスーパープログラマーが
10分で1000ステップこなせると豪語していたのですが、
そんなに短時間で大量のコード打ち込むことあるんでしょうか??
10分で1000ステップこなせると豪語していたのですが、
そんなに短時間で大量のコード打ち込むことあるんでしょうか??
2015/12/13(日) 00:33:15.83ID:G+bJpCOE
まず、マルチポスト先全てに相互リンクをはる
他のところで回答があればそれをすべてのところで知らせる
まずはそれだな
他のとこですでに指摘を受けてんだから
他のところで回答があればそれをすべてのところで知らせる
まずはそれだな
他のとこですでに指摘を受けてんだから
2015/12/13(日) 11:52:05.63ID:dMx4dI39
おことわりします
2015/12/13(日) 17:13:37.87ID:Vc5sQ8jF
初心者なら何をやっても許されるw
19片山博文MZ ◆T6xkBnTXz7B0
2015/12/13(日) 17:19:35.77ID:puMyoqPQ 初心者がHTTPクライアントをゼロから作るだと?! あり得ない!
2015/12/13(日) 17:28:02.74ID:Vc5sQ8jF
片山の面子丸つぶれw
2015/12/14(月) 07:48:28.92ID:vCFPKOAB
単質スレ立てた時点で回答はつかないと思え。
年出精値引きで25万円で作ってやるよ
年出精値引きで25万円で作ってやるよ
22デフォルトの名無しさん
2015/12/17(木) 17:22:20.36ID:Szn4FINI curl
2015/12/17(木) 22:21:30.66ID:ORM8WttR
おやつはカール
24デフォルトの名無しさん
2015/12/19(土) 09:15:01.49ID:zsWJQfw7 プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
25デフォルトの名無しさん
2016/01/28(木) 22:03:18.54ID:5vQwMO3l !!2ちゃんねらーが稼ぐならこれだよ
http://goo.gl/BJ5RuV
http://goo.gl/BJ5RuV
26デフォルトの名無しさん
2016/02/18(木) 08:54:17.52ID:mGZum/GQ Httpのchunkとか言う奴じゃね?
記憶が正しければ、サーバーが返してくるヘッダの中に
Chunk使うと吐かれていれば
それ。
その都度送ったバイト数が、バイナリで入ってた気がする。
httpクライアントのクラス、自分で書きたいよねw
毎度仕様の実装が面倒で挫折するけどww
記憶が正しければ、サーバーが返してくるヘッダの中に
Chunk使うと吐かれていれば
それ。
その都度送ったバイト数が、バイナリで入ってた気がする。
httpクライアントのクラス、自分で書きたいよねw
毎度仕様の実装が面倒で挫折するけどww
27デフォルトの名無しさん
2016/04/23(土) 05:08:44.58ID:TwuNXQH0 スレッド実装もして無くて泣いたwww
2016/04/23(土) 09:22:35.73ID:Nt0JgD2+
Unicode の wchar を char で見て 0終端に引っかかる罠
29デフォルトの名無しさん
2018/05/23(水) 22:31:40.87ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
2ZZY2
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
2ZZY2
30デフォルトの名無しさん
2018/07/04(水) 23:34:34.73ID:gFgZc5FG QEO
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「ブサイクな金持ち」と「貧乏イケメン」、女性はどっちを選ぶのか マッチングアプリが明らかにした“残酷すぎる結論” [♪♪♪★]
- 幾田りら、再生100億回でも札幌ドームが埋まらず「YOASOBIほどの認知度でもチケット余るのか」再生数と集客の残酷なギャップ★2 [muffin★]
- 「イスラム教徒は繁殖力が半端ない」 “音楽界の重鎮”経営者 Xの投稿が“差別”と炎上… 「立場的に反省」と謝罪も止まぬ批判 [冬月記者★]
- 【就活】企業が求める人材像、「コミュニケーション能力が高い」がトップ 「専門的スキル」「AIやデジタル技術を活用できる」は低位に [煮卵★]
- 【野球】巨人、異例の“中学校卒”を指名 場内どよめき…15歳がプロに声 [THE FURYφ★]
- 【ドラフト】横浜・織田翔希を巨人が強行指名 米球界挑戦を表明も まさかの展開に会場騒然 [征夷大将軍★]
- 【悲報】治験バイトで20人全員死亡、日本 [347751896]
- 「労働するメリットが実感できない」低所得の人ほど投資をしている実態が鮮明に…投資が“心の支え”になっている現実 [314039747]
- 日本人「もし中国と戦争になったら世界中の国がみんな日本の味方になり中国を叩きのめしてくれる!」 これマジのガチで信じてるんだな… [314039747]
- 【高市悲報】米国市場、暴落して終わる。 [667773354]
- 俺たちの大谷翔平さんが地元紙から打者として最低のFの評価を獲得してFランク男になったという事実、あまり報道されない [617981698]
- モンゴルで火災をおこしたKDDI子会社CEO 3400人の消防隊出して火災を食い止めた中国側への謝意無し [633746646]