通过HTTP访问数据

时间:2013-10-15 18:46:42

标签: java apache-httpclient-4.x

我试图从带有java的单独服务器上的asp页面获取信息。

以下是我目前正在为代码运行的内容:

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.nse.common.text.*" %>
<%@ page import="com.nse.common.admin.*" %>
<%@ page import="com.nse.common.util.*" %>
<%@ page import="com.nse.common.config.*" %>
<%@ page import="com.nse.ms.*" %>
<%

        String targetUrl = "http://******/dash_auth/getmsuser.asp";
        InputStream r2 = new URL(targetUrl).openStream();

%>

<html>
<head>
    <title>get username</title>
</head>

<body>
Return Info = <%=r2%>
</body>
</html>

这就是我要回来的事情

Return Info = sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@5fc9f555

我希望得到一个用户名,而不是这个连接字符串。关于如何获得我的其他页面的实际输出的任何建议将非常有用!

3 个答案:

答案 0 :(得分:2)

当您执行<%=r2%>时,您获得的是out.print(r2.toString()),它只是提供实例的描述

使用方法从InputStream读取,以获取服务器结果。

答案 1 :(得分:1)

您必须从InputStream中读取()。

答案 2 :(得分:-1)

您需要使用http客户端创建连接并获取内容。或者对像curl这样的OS实用程序进行系统调用。

以下是有关如何使用http客户端的示例

http://hc.apache.org/httpclient-legacy/tutorial.html

如果您想以非托管方式执行此操作,这是一个有效的示例:

public class URLStreamExample {

public static void main(String[] args) {
    try {
        URL url = new URL("http://www.google.com");
        InputStream is = url.openStream();
        byte[] buffer = new byte[2048];
        StringBuilder sb = new StringBuilder();
        while (is.read(buffer) != -1){
            sb.append(new String(buffer));
        }

        System.out.println(sb.toString());
    } catch (MalformedURLException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    } catch (IOException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
}

}