0

我正在尝试从带有 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

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

4

3 回答 3

2

当你这样做<%=r2%>时,你得到的是out.print(r2.toString()),它只是给出了实例的描述

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

于 2013-10-15T18:51:13.790 回答
1

您必须从 InputStream 中读取()。

于 2013-10-15T18:51:04.907 回答
-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.
    }
}

}

于 2013-10-15T18:51:18.393 回答