6

アクティビティからブラウザーで URL を起動する必要があるという特定の要件があります。次のコードでこれを行うことができます:

String finalUrl = "http://localhost:7001/display/result.jsp?param=12345";
Intent browserIntent = new Intent(android.content.Intent.ACTION_VIEW,
                        Uri.parse(finalUrl));

ここで、queryString 自体としてではなく、リクエストのリクエスト ヘッダーとして「param」を渡して、result.jsp を呼び出したいと思います。

誰かアドバイスをお願いできますか?

事前にどうもありがとう

編集 リクエスト本文に「param」を含む POST リクエストでも問題ありません。

EDIT 2 受け入れられた回答は、ヘッダーではなく、POSTリクエストに対するものです。

4

1 に答える 1

14

Android ブラウザは JavaScript の「表示」をサポートしています。たとえば、次のコードはブラウザ アプリを起動して警告ダイアログを表示できます。

    String finalUrl = "javascript:alert('hello')";
    Intent browserIntent = new Intent(android.content.Intent.ACTION_VIEW,
                            Uri.parse(finalUrl));
    startActivity(browserIntent);

JavaScript で投稿操作を行う一般的な方法は、JavaScript でフォームを作成してから送信することです。したがって、理論的には以下のようなコードが機能するはずです (コードの一部はこの投稿からコピーされます)。

    //String finalUrl = "http://localhost:7001/display/result.jsp?param=12345";
    String finalUrl = "javascript:" + 
        "var to = 'http://localhost:7001/display/result.jsp';" +
        "var p = {param:'12345',param2:'blablabla',param3:'whatever'};"+
        "var myForm = document.createElement('form');" +
        "myForm.method='post' ;" +
        "myForm.action = to;" +
        "for (var k in p) {" +
            "var myInput = document.createElement('input') ;" +
            "myInput.setAttribute('type', 'text');" +
            "myInput.setAttribute('name', k) ;" +
            "myInput.setAttribute('value', p[k]);" +
            "myForm.appendChild(myInput) ;" +
        "}" +
        "document.body.appendChild(myForm) ;" +
        "myForm.submit() ;" +
        "document.body.removeChild(myForm) ;";
    Intent browserIntent = new Intent(android.content.Intent.ACTION_VIEW,
                            Uri.parse(finalUrl));
    startActivity(browserIntent);
于 2012-10-15T08:38:40.317 に答える