• 締切済み

BCB CPPWEBBROWSERでPOSTデータを送信する方法

BCB5で、TCppWebBrowser、RichEdit、Buttuonを貼り付けたフォームがあります。このRichEditの内容を、POSTメソッドでWebサーバ上のCGIへ渡して、結果をCppWebBrowserで表示したいのですが、以下のようなコードで試したところ、POSTデータが反映されません。 PostDataのVariant型の扱いなどがおかしいのでしょうか。ご存知の方、ご教授ください。 void __fastcall TLogoAppForm::Button1Click(TObject *Sender) { AnsiString strPost; AnsiString strURL; strURL = "http://192.168.0.1/searchdb/index.cgi"; strPost = RichEdit1->Lines->Text; TVariant *PostData = new TVariant; PostData->bstrVal = "mydata=hogehoge"; Web->Navigate(WideString(strURL),NULL,NULL,PostData);

みんなの回答

  • verun
  • ベストアンサー率0% (0/0)
回答No.1

Variantはそれ自体が型なので、char配列を間においてそのまま代入します。 NavigateではなくNavigate2を使用します。 char data[ 1024 ]; sprintf( data, "http://192.168.0.1/searchdb/index.cgi" ); Variant http; http = data; CppWebBrowser1->Navigate2(http); では

参考URL:
http://gamesnet.hoops.ne.jp/

関連するQ&A

  • BCBでSQLite

    下記のサイトを参考にさせて頂き、BCB5を使用してSQLite3を操作しようと格闘中です。 自分のレベル的には初心者を脱しようかといったところだと思います。 http://members.jcom.home.ne.jp/komina/wiki/4243422F53514C69746533A4F2BBEEA4B9.html TEdit1一つに郵便番号7桁を入力して、Button1クリックで該当する住所を検索してMemo1に表示するものですが、コンパイルエラーになってしまい対処法がわかりません。 ちなみにそこで紹介されている、ライブラリをリンクするのが上手くいきませんで sqlite3.cをプロジェクトに追加してメイクしました。 また、文字コードをUTF-8に変換するというのが別サイトにも書かれていました エラー内容は、 E2034 'int(*(_closure))(void *,int,char**,char**))(void*,int char**,char**)'型は'int(*)(void*,int,char**,char**)'型に変換できない。 E2342 パラメータ'callback'はint(*)(void*,int,char**,char**)型として定義されているのでvoidは渡せない 以下、ソース抜粋です。宜しくご教授お願いいたします。 int TFmMain::callback(void* arg,int argc,char** argv,char** column){ AnsiString addr1=argv[0]; AnsiString addr2=argv[1]; AnsiString addr3=argv[2]; add_message(addr1+addr2+addr3); return SQLITE_OK; } void __fastcall TFmMain::Button1Click(TObject *Sender) { sqlite3* db; if(sqlite3_open("DBTEST1.db",&db)==SQLITE_OK){ add_message("DB open"); int rtn; char* sql; sql=sqlite3_mprintf("SELECT ADDR1,ADDR2,ADDR3 FROM ZIP WHERE ZIP=%d" ,StrToInt(Edit1->Text)); add_message(sql); rtn=sqlite3_exec(db,sql,callback,NULL,NULL); <<< ここでエラー発生!! if(rtn!=SQLITE_OK){ add_message("COMMAND err"); } sqlite3_free(sql); sqlite3_close(db); add_message("DB close"); }else{ add_message("DB open err"); } }

  • BCBでSQLite操作

    下記のサイトを参考にさせて頂き、BCB5からSQLite3を操作しようと格闘中です。 http://members.jcom.home.ne.jp/komina/wiki/4243422F53514C69746533A4F2BBEEA4B9.html TEdit1に郵便番号7桁を入力して、Button1クリックでMemo1に該当住所等を表示するものですが コンパイルエラーが発生して対処法がわかりません。ご教授お願いいたします。 ちなみに、そこで紹介されているライブラリのリンクが上手くいかないので sqlite3.cをプロジェクトに追加してメイクしております。 また、別のサイトではUTF-8を使わないといけない様なことも書いてありました。 エラー内容は、 E2034 'int(*(_closure)(void*,int char**,char**))(void*,int,char**,char**)'型は'int(*)void*,int,char**,char**)'型に変換できない E2342 パラメータ'callback'はint(*)(void*,int,char**,char**)型として定義されているのでvoidは渡せない 以下、ソース抜粋です。 int TFmMain::callback(void* arg,int argc,char** argv,char** column){ AnsiString addr1=argv[0]; AnsiString addr2=argv[1]; AnsiString addr3=argv[2]; add_message(addr1+addr2+addr3); return SQLITE_OK; } void __fastcall TFmMain::Button1Click(TObject *Sender) { sqlite3* db; if(sqlite3_open("DBTEST1.db",&db)==SQLITE_OK){ add_message("DB open"); int rtn; char* sql; sql=sqlite3_mprintf("SELECT ADDR1,ADDR2,ADDR3 FROM ZIP WHERE ZIP=%d" ,StrToInt(Edit1->Text)); add_message(sql); rtn=sqlite3_exec(db,sql,callback,NULL,NULL); <<< ここでエラー発生します!! if(rtn!=SQLITE_OK){ add_message("COMMAND err"); } sqlite3_free(sql); sqlite3_close(db); add_message("DB close"); }else{ add_message("DB open err"); } }

  • GeckoWebBrowserどうやってpost?

    はじめてGeckoWebBrowserを使うので全然わかりません。。。次のような方法でPostすると一つ目のURLのページに行くだけでした、Postは何もしなかったのようです。いろいろGeckoLoadFlagsを変えて見ましたが変わりませんでした。 今すっごく悩んでいます。。。 web.Navigate("http://www.mbok.jp/_my0", GeckoLoadFlags.FirstLoad, null, Encoding.GetEncoding("Shift_JIS").GetBytes(poststr), "Content-Type: application/x-www-form-urlencoded" + Environment.NewLine); PS:Windows Form Webbrowserが別の用途で使っていますので、ここは別のWebエンジンを使います、GeckoWebBrowserを選びました。 ぜひ助けてください!

  • Variant型の中を調べる。

    C++BuilderXE2 です。(この投稿は他でも行っていることをご了解ください) CppWebBrowserでページ移動が生じる場合に発生するイベント void __fastcall TForm1::onbefore_navigate2(TObject *Sender, LPDISPATCH pDisp, Variant *URL, Variant *Flags, Variant *TargetFrameName, Variant *PostData, Variant *Headers, VARIANT_BOOL *Cancel) において渡される、Variant型を見る方法について教えて下さい。 Varinat型ははじめて見ますが、検索すると16バイトで構成されるているようです。 タイプを見て、それにあった解釈をするようにせざるを得ないのでしょうか。 msdnの http://msdn.microsoft.com/en-us/library/dd301308.aspx の記事を参考に明らかに文字のはずであるTargetFrameNameについて、試しに Memo1->Lines->Add("ISCHAR "+ TargetFrameName->ISCHAR); としたところ、 [BCC32 エラー] login.cpp(119): E2316 'ISCHAR' は 'Variant' のメンバではない となります。このような使い方はできないのでしょうか。 なお Memo1->Lines->Add("url:"+*URL); とするとそれらしいURLが表示されます。

  • バイナリ形式の読み込み

    void __fastcall TForm1::LoadData() { FILE *fp; int XYData[36000],I; AnsiString A; fp = fopen( "C:\\test1\\¥A.rdt", "rb" ); if( fp == NULL ){ ShowMessage("file open error\n" ); exit( 1 ); fread(XYData,2,70000,fp);         for(I=0;I<3600; I++){ A=XYData[I]; Memo1->Lines->LoadFromFile(A); } fclose(fp); } } これでメモに表示させたかったのですがうまく表示されてません。 読み込めていないのか、使い方が間違ってるのかわからないので指導よろしくお願いします。

  • ifjpeg.spiを呼び出すプログラムでエラー

    現在、Code Gear C++ Builder 2009 でプログラミングをしていて、ifjpeg.spiというDLLファイルの読み出しプログラムを作成しているのですが、 コマンドボタンを押して、”ProcGetPluginInfo”というデータをとりだすというプログラムなのですが、 [ILINK32 エラー] Error: 未解決の外部参照 '__fastcall TMainForm::CallButtonClick(System::TObject *)' が C:\・・(中略)・・・\VC_TEST\CPP_BUILDER_2009\TEST_PICTURE_VIEW\RELEASE\UNIT1.OBJ から参照されました このようなエラーが出てきます。 解決方法ご存じの方いらっしゃいませんでしょうか? void __fastcall TMainForm::InfoButtonClick(TObject *Sender) { char buf[80]; HINSTANCE hSPI = LoadLibrary(PluginNameEdit->Text.c_str()); //HINSTANCE hSPI = LoadLibrary("ifjpeg.spi"); //HINSTANCE hSPI; //ロードエラー if( hSPI == NULL ){ ShowMessage("プラグインファイルがロードできません"); return; } ProcGetPluginInfo GetPluginInfo = (ProcGetPluginInfo)GetProcAddress(hSPI,"GetPluginInfo"); //アドレス取得エラー if( GetPluginInfo == NULL ){ ShowMessage("Susieプラグインではありません"); FreeLibrary(hSPI); return; } //情報0 GetPluginInfo(0,buf,80); Memo1->Lines->Add(buf); //Memo->Lines->Add(buf); //情報1 GetPluginInfo(1,buf,80); Memo1->Lines->Add(buf); //情報2 for( int i=0; GetPluginInfo(i*2+2, buf, 80) > 0; i++){ Memo1->Lines->Add(buf); GetPluginInfo(i*2+3,buf,80); Memo1->Lines->Add(buf); } FreeLibrary(hSPI); } //---------------------

  • POSTでデータを送信する方法。

    他のサーバーのCGIに対してPOSTでデータを送信する方法を探しています。 Perlバージョンは5.8 使用可能モジュールはPerl5.8 標準モジュール もしくはPurePerlモジュール この環境でPOSTを扱う方法をご存知でしたら、教えていただきたく思います。

  • POSTで送信したデータを使いたいのですが

    はじめまして、最近やり始めたばっかりの初心者です。 質問なのですがブラウザ上でテキストにデータベース名を入力して <form action=database5.cgi method=post> <input type=text name ="data1"> <INPUT TYPE=submit VALUE=" 送信 "> でdatabase5.cgiにわたして そのcgiのなかで #------------------------------------------<SELECT文 設定> $SQL = "select column_name,data_type from user_tab_columns where table_name = 'この指定の仕方がわからない '"; $hSt = $hDb->prepare($SQL) or die &err_ora; のtable_name として用いたいのですが、いったいどのようにそのテキストに 入力したテーブル名を取り出したらいいのかわからないのです。 あらかじめテーブル名を記述しておいてブラウザ上で呼び出すと結果でる というのはわかったのですが、実際にブラウザ上で任意のテーブル名を いれて同様の結果を得るという操作がどうしてもできません。 まだ初心者な者で質問の仕方も非常にわかりにくいのですが どなたかよきアドバイスをお願いいたします。

  • POSTデータが送信されなくなりました。

    ある時から急にApache2+PHP4の環境下でPOSTデータが送信(又は受信)が出来なくなりました。 現象としましては、フォームで送信されたPOSTデータが送信(又は受信)出来ず、$_POSTの中を開いてみても何も無い空の状態で、念のため$_GETを開いて見ても空の状態でした。 この現象が出ている状態で、GETでデータを送信したところ、これは送受信共に可能でした。 Apacheを再起動すると現象は無くなるのですが、1日程すると再発します。 早いときでは半日程で…。 再起動してから再発するまでの期間は定まっていないみたいなので、定期的に再起動させるという方法がとれそうになく、 またその現象が出る原因が私には全くわからず… この現象はどういった時に何が原因で発生し、また解消方法を知っている方がいましたら教えて頂けないでしょうか。 Apache等のバージョンは Apache/2.0.59 (Win32) mod_ssl/2.0.59 OpenSSL/0.9.8d PHP/4.4.6 です。 SSL通信でやっていますので、一応そちらの方も記載しておきます

    • ベストアンサー
    • PHP
  • CGIを使わないフォームメール

    CGI使用不可のWebサーバーにフォームメールを作成しました。HTMLで <FORM ACTION="mailto:送信先メールアドレス" METHOD="POST"> としたものです。 これを使うと 1.送信ボタンを押したら、「このフォームを送信すると、電子メールアドレスが受信者に公開され、フォームのデータが暗号化されずに送信されます。この送信は続行することもできますが、取り消すこともできます。」という非常に物騒なメッセージがでる。 2.受信した時の件名が「Microsoft Internet Explorer から投稿されたフォーム」となり件名を指定できない。 3.受信データがPOSTDATA.ATTという添付ファイルになり、内容がエンコードされたバイトコードでデコードしないと内容が読めない。 CGIを使ってSendmailで送信させればいいじゃないの・・・と思うでしょうが、ISPがCGI使用不可なのです。HTMLフォームで先の1~3が改善される方法はないでしょうか。