0

サーバーにデプロイされたJavaプログラムが、キャプチャ画像を含むWebサイトからページをフェッチするという状況があります。画像がエンドユーザーに表示され、エンドユーザーはキャプチャの値を入力してそのページをサーバーに送信します。サーバーはその値をメインのWebサイトに送信します。

httpクライアントを使用して試しましたが、送信時に無効な画像値と表示されます。

私を助けてください。ユーザーのキャプチャ画像を表示するコード

HttpClient hc=new HttpClient();
GetMethod gm=new GetMethod("https://abc.com/register");
int sta=hc.executeMethod(gm);
String line=gm.getResponseBodyAsString();

    urlStr="https://abc.com/captchaImage";
    URL url=new URL(urlStr);
    BufferedImage img1 = ImageIO.read(url);
    ImageIO.write(img1, "jpg", out);

abc.comにrequetsを送信する

HttpClient hc=new HttpClient();
PostMethod hm=new PostMethod("https://abc.com/submit");
hm.addParameter("pwd","Asdf@123456" );
hm.addParameter("confirmPwd","Asdf@123456");
hm.addParameter("hintQues","Birth+City");
hm.addParameter("hintAns","fdgf");
hm.addParameter("captchavalue",request.getParameter("cap"));
hm.addParameter("register","Register");
int returnCode = hc.executeMethod(hm);
out.println(hm.getResponseBodyAsString());
4

1 に答える 1

4

abc.comの登録がどのように機能するかを分析していませんが、隠しフィールド(コードにパラメーターが表示されない)またはCookieを使用して、ユーザーに表示されたキャプチャを記憶していることを確認します。ブラウザから送信されたキャプチャ値が正しい値である場合。

非表示フィールドの値を送信せず、新しいHttpClientインスタンスを使用しているため、サーバーにキャプチャ値を送信していますが、この値を送信しているキャプチャを知る方法はありません。 、およびそれを確認することはできません。

サーバーから登録ページを取得するために使用したものと同じHttpClientのインスタンスを再利用してみてください。このようにして、HttpClientの状態で保存されたCookieがサーバーに送り返されます。

于 2012-06-10T17:22:51.543 に答える