java - 如何使用 Ngrok 将简单的 Java HTTP 客户端应用程序连接到 Web 资源?

标签 java http tomcat apache-httpclient-4.x ngrok

我已经编写了一个简单的 Java HTTP 客户端应用程序,它应该使用 ngrok 从我的机器连接到外部资源。示例代码为:

public void sendMessage(String number, String message) {

    try {

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(
                LINK);
        httpPost.addHeader("content-type", "application/json");

        List<NameValuePair> nvps = new ArrayList<>();
        nvps.add(new BasicNameValuePair("Authorization", getBasicAuth()));
        nvps.add(new BasicNameValuePair("LOGIN", LOGIN));
        nvps.add(new BasicNameValuePair("PASSWORD", PASSWORD));
        nvps.add(new BasicNameValuePair("Message", "Hello, World!"));
        httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

        HttpResponse response = httpClient.execute(httpPost);

        if (response.getStatusLine().getStatusCode() != 201) {
            throw new RuntimeException("Failed : HTTP error code : "
                    + response.getStatusLine().getStatusCode());
        }

        BufferedReader br = new BufferedReader(
                new InputStreamReader((response.getEntity().getContent())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        httpClient.getConnectionManager().shutdown();

    } catch (MalformedURLException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    }
}

ngrok 文档告诉我应该提供一个到本地 Web 服务器的端口。 但在我的例子中,它是一个简单的单类应用程序,没有配置 Tomcat。那么我应该如何配置 ngrok 来传输我的应用程序的 HTTP 请求呢?

我还尝试在 Tomcat 服务器后面运行我的应用程序,在两侧(tomcat 和 ngrok)设置正确的端口 - 仍然没有建立通信。

最佳答案

我不太确定你想要什么,但你只是计划向远程服务器发出客户端请求,然后你不需要 ngrok 来做到这一点。 Ngrok 可帮助您在本地主机上设置一个可供外界访问的 Web 服务器,因为默认情况下防火墙不允许从 Internet 连接到本地主机。

从您的代码中,我看到您正在尝试将请求发送到某个 LINK。您是否尝试过对 LINK 执行 ping 操作以查看它是否真的在接受连接( Activity )?运行该程序时,您的计算机是否已连接到互联网?

关于java - 如何使用 Ngrok 将简单的 Java HTTP 客户端应用程序连接到 Web 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034718/

相关文章:

java - 从不同的包调用公共(public)类中的公共(public)类

java - 在 RFT 中输出数据池中的特定记录

javascript - CORS 不适用于 tomcat + javascript

css - 在eclipse动态web元素中,如何将css链接到webcontent文件夹中的jsp文件

AsyncTask 中的 java.lang.NullPointerException

Java 实例化实现接口(interface)的泛型类型

node.js - Angular 7 - 在运行时将文件加载到 Assets 文件夹中

apache - HTTP KeepAlive 连接被服务器关闭但客户端同时发送了一个请求

ASP.net 发布和默认页面

java - 如何在Tomcat中配置环境变量?