2011-01-23 6 views
0

このコードをJSPに変換するにはどうすればいいですかJSPでfsockopen相当のもの

何か助けてください!

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $out = "GET/HTTP/1.1\r\n"; 
    $out .= "Host: www.example.com\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out); 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
+0

コードの記述は、なぜあなたはBeanを作成しないと、そこにそれを使用し、何の良いアイデアではありませんか?コードは同じで、ユーザビリティとテスト容易性ははるかに優れています。 – maaartinus

答えて

0

Apache HTTP Componentsライブラリでこれを行うことができます。以下は、HTTPコンポーネントのライブラリで動作するはずのような何か:

<%@ page import="org.apache.http.*, org.apache.http.impl.*, org.apache.http.params.*, org.apache.http.protocol.*, org.apache.http.message.BasicHttpRequest, org.apache.http.util.EntityUtils, java.net.Socket" %> 

<% 
HttpParams params = new SyncBasicHttpParams(); 
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
HttpProtocolParams.setContentCharset(params, "UTF-8"); 
HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1"); 
HttpProtocolParams.setUseExpectContinue(params, true); 

HttpProcessor httpproc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] { 
     new RequestContent(), 
     new RequestTargetHost(), 
     new RequestConnControl(), 
     new RequestUserAgent(), 
     new RequestExpectContinue()}); 

HttpRequestExecutor httpexecutor = new HttpRequestExecutor(); 

HttpContext context = new BasicHttpContext(null); 
HttpHost host = new HttpHost("www.example.com", 80); 

DefaultHttpClientConnection conn = new DefaultHttpClientConnection(); 
ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy(); 

context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); 
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host); 

try 
{   
    Socket socket = new Socket(host.getHostName(), host.getPort()); 
    conn.bind(socket, params); 

    BasicHttpRequest request = new BasicHttpRequest("GET", "/"); 


    request.setParams(params); 
    httpexecutor.preProcess(request, httpproc, context); 
    HttpResponse response = httpexecutor.execute(request, conn, context); 
    response.setParams(params); 
    httpexecutor.postProcess(response, httpproc, context); 

%> 
<%=EntityUtils.toString(response.getEntity())%> 
<% 
} 
finally 
{ 
    conn.close(); 
} 
%> 
2

あなたはこのためにJSTLタグライブラリを使用することができます。まず

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

を使用してJSPの一番上に名前空間を宣言し、Cを使用:指定されたURLからコンテンツを含めるためのインポートタグ:

<c:import url="htp://www.example.com/" /> 
1

それが動作これをチェックアウトし.... ...

<% @ページのcontentType = "text/htmlの" インポート= "java.io。、java.net。" %>

< % { ソケットs =新しいソケット( "www.java2s.com"、80); JSPで

 BufferedReader in = new BufferedReader(new 
      InputStreamReader(s.getInputStream())); 
     PrintWriter socketOut = new PrintWriter(s.getOutputStream()); 

     socketOut.print("GET /index.html\n\n"); 
     socketOut.flush(); 

     String line; 

     while ((line = in.readLine()) != null){ 
      out.println(line); 
     } 

    } catch (Exception e){} 

%>

関連する問題