0

次のようなフォームを Java で送信しようとしています。

<form id="bForm" action="/a/b.php" method="POST"></form>

ありません<input type="hidden">、まったくありません<input>。ソースでは、次のような JavaScript コードを実行するリンクをクリックすると、このフォームが送信されることがわかります。

javascript:b(<k>,<v>)

ここで<k>and<v>は、いくつかの数字で構成されるキーと値です。

さて、b()ソースの関数は次のとおりです。

function b(value, key) {
        var form = document.getElementById('bForm');
        form.action = '/b/user/' + key + '/' + value + '.txt';
        form.submit();
}

私が受信しようとしているのは、応答として送信される.txtファイルですが、直接開こうとしています

http://<url>.com/b/user/<key>/<value>.txt 

ブラウザで .txt ファイルを取得できませんが、POST メソッドを使用してアクセスする必要があるというメッセージが表示されます。

今、私は POST 経由でリクエストを送信する方法について読んで (ここで解決策を見つけようとしても)、ほとんど理解していると思います。それでも、フォームとは何かを含め、今日はほとんどすべてを読んだだけなので、解決策が明らかな場合はすみません。ここでの問題は、フォームの送信時に実行するアクションを「URL に知らせる」ために渡すことができるパラメーターがないことです。

フォームのアクションを変更することはおそらくできないので、どうすればよいでしょうか? 「POST」経由で .txt ファイルにつながる URL に何らかの方法で「接続」できますか? または、どうにかして JavaScript を実行する必要がありますか?

編集:私は今問題を解決しました.私の説明が十分であるかどうかはわかりませんが、解決策は非常に単純に見えました.フォームについて十分に知りませんでした. したがって、action=#myurl# は、フォームが現在のページではなく #myurl# に送信されることを意味します。また、送信されたフォームに対して何もできないファイルをターゲット URL が指しているように見えますが、これは正しくありません。実際、これはスクリプトを指していますが、URL でダウンロードしたいファイルへのパスしか見えないように、スクリプトは「隠されている」のです。だから、私はこれをやった:

URL url = new URL("http://myurl.com/b/user/" + key + "/" + value + ".txt");
HttpURLConnection c = (HttpURLConnection) url.openConnection();
//set User-Agent, Cookie, etc. properties here
c.setRequestMethod("POST");
c.setInstanceFollowRedirects(false); //not sure if this is needed
InputStream in = c.getInputStream(); //this submits the parameter-less form
//now I can get the response with this stream, i.e. read & save the .txt file

すべてがテストされ、完全なコードを実行しているため、確実に機能します。

4

0 に答える 0