Javaバックグラウンドメソッドurlブラウザにウィンドウを開くように要求
3060 ワード
プロジェクトでは、本システムAでパラメータを組み立て、システムBが提供する部分uriに基づいて、完全なurlを組み立てる必要があります.
「http://127.0.0.1:8090/test/index.jsp?userId=123&prjId=51011;httpプロトコルでシステムBにアクセス.システムAのリンクをクリックするとブラウザでtabページが開き、システムBに対応する内容が表示される.このような小さなニーズで一日苦労したが、問題はなんとか解決した!ここで記録!第一反応はリダイレクトで実現するが、リダイレクトはget方式で提出され、提出されたパラメータ長は制限があります.256文字ぐらいでしょう.プロジェクトで組み立てるパラメータが256を超える可能性があるので、この方法は使用できません.
そこでHttpClientを使いたいのですが、HttpClientを使うには依存するjarを追加しなければなりませんが、jarを追加したくないので、この方法は
代替案!
ある同僚はHttpUrlConnectionを使うことができると言って、开発の中でパラメータの伝达に出会う时、システムBの中で必死にパラメータを得ることができません.
ステップはservletがforwardの時、パラメータをなくしたと確定しました.今までこの問題はまだ解決方法を考えていません.もしあなたが良い解決方法があれば.
法、またご指导をお愿いします...
仕方なくHttpClientを使うしかなくて、実現方法はとても簡単で、直接コードを貼りましょう
注意:
response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.getWriter().print(htmlContext);
要求されたデータをブラウザに表示する方法を教えます.
「http://127.0.0.1:8090/test/index.jsp?userId=123&prjId=51011;httpプロトコルでシステムBにアクセス.システムAのリンクをクリックするとブラウザでtabページが開き、システムBに対応する内容が表示される.このような小さなニーズで一日苦労したが、問題はなんとか解決した!ここで記録!第一反応はリダイレクトで実現するが、リダイレクトはget方式で提出され、提出されたパラメータ長は制限があります.256文字ぐらいでしょう.プロジェクトで組み立てるパラメータが256を超える可能性があるので、この方法は使用できません.
そこでHttpClientを使いたいのですが、HttpClientを使うには依存するjarを追加しなければなりませんが、jarを追加したくないので、この方法は
代替案!
ある同僚はHttpUrlConnectionを使うことができると言って、开発の中でパラメータの伝达に出会う时、システムBの中で必死にパラメータを得ることができません.
ステップはservletがforwardの時、パラメータをなくしたと確定しました.今までこの問題はまだ解決方法を考えていません.もしあなたが良い解決方法があれば.
法、またご指导をお愿いします...
仕方なくHttpClientを使うしかなくて、実現方法はとても簡単で、直接コードを貼りましょう
String postURL = "http://127.0.0.1:8090/test/index.jsp";
HttpClient httpClient = new DefaultHttpClient();
httpClient.getParams().setParameter(HttpProtocolParams.HTTP_CONTENT_CHARSET,"UTF-
8");
HttpPost httpPost = new HttpPost(postURL);
StringEntity reqEntity = new StringEntity(returnUrl(request, response),"UTF-8");
reqEntity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(reqEntity);
/*List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("USERNAME", " "));
nvps.add(new BasicNameValuePair("USERID", "123"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));*/
HttpResponse httpResponse = httpClient.execute(httpPost);
StatusLine status= httpResponse.getStatusLine();
if(200 == status.getStatusCode()){
HttpEntity httpEntity = httpResponse.getEntity();
if(httpEntity != null){
String htmlContext = EntityUtils.toString(httpEntity);
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(htmlContext);
//
//response.getOutputStream().print(new String(sbf.toString
().getBytes("ISO-8859-1"),"UTF-8"));
}
EntityUtils.consume(httpEntity);
}
httpClient.getConnectionManager().shutdown();
/*String uri = "http://127.0.0.1:8080/test/index.jsp"+"?"+returnUrl(request, response);
response.sendRedirect(uri);*/
注意:
response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.getWriter().print(htmlContext);
要求されたデータをブラウザに表示する方法を教えます.