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を使うしかなくて、実現方法はとても簡単で、直接コードを貼りましょう
 
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);
要求されたデータをブラウザに表示する方法を教えます.