HarmonyOS鸿蒙Next中使用本地模拟器进行post请求,报错java.net.ConnectException: Failed to connect to /192.168.153.2:13072(内网环境),但是使用postman可以请求成功

HarmonyOS鸿蒙Next中使用本地模拟器进行post请求,报错java.net.ConnectException: Failed to connect to /192.168.153.2:13072(内网环境),但是使用postman可以请求成功

public static void sendPostRequest(String urlString, String jsonParams, OnRequestResultListener onRequestResultListener) {
    netManager = NetManager.getInstance(null);
    if (!netManager.hasDefaultNet()) {
        return;
    }
    onRequestResultListener.startRequest();
    ThreadPoolUtil.submit(() -> {
        NetHandle netHandle = netManager.getDefaultNet();
        netManager.addDefaultNetStatusCallback(callback);
        HttpURLConnection connection = null;
        try {
            //url
            URL url = new URL(urlString);
            URLConnection urlConnection = netHandle.openConnection(url, Proxy.NO_PROXY);
            if (urlConnection instanceof HttpURLConnection) {
                connection = (HttpURLConnection) urlConnection;
            }
            // 设置超时时间
            connection.setConnectTimeout(COUN_TIME_OUT);
            connection.setReadTimeout(READ_TIME_OUT);
            //设置请求参数
            //postParams(connection, params);
            connection.setRequestMethod("POST");
            // 设置通用请求类型
            connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            connection.setRequestProperty("Charset", "UTF-8");
            // 设置链接状态
            connection.setRequestProperty("connection", "keep-alive");
            // post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false;
            connection.setDoOutput(true);
            // 设置是否从httpUrlConnection读入,默认情况下是true;
            connection.setDoInput(true);
            // Post 请求不能使用缓存
            connection.setUseCaches(false);
            // 设置本次连接是否自动处理重定向
            connection.setInstanceFollowRedirects(true);
            connection.connect();
            if (!TextUtils.isEmpty(jsonParams) && jsonParams.getBytes("utf-8").length > 2) {
                OutputStream out = connection.getOutputStream();
                out.write(jsonParams.getBytes("utf-8"));//把这个字节数组的数据写入缓冲区中
                out.flush();//刷新缓冲区,发送数据
            }
            if (connection.getResponseCode() == 200) {
                // 获取返回流
                String result = getResult(urlConnection.getInputStream());
                builder.append(urlString).append("::::::::::").append(jsonParams).append("::::::::::").append(result).append("\n");
                onRequestResultListener.onSuccess(result);
            } else {
                // 获取返回流
                String result = getResult(urlConnection.getInputStream());
                builder.append(urlString + "::::::::::" + result).append("\n");
                onRequestResultListener.onFail("数据错误:" + result + "======" + connection.getResponseCode());
            }
        } catch (Exception e) {
            builder.append(urlString + "::::::::::" + e.toString()).append("\n");
            onRequestResultListener.onFail(e.toString());
        } finally {
            onRequestResultListener.endRequest();
        }
    });
}

更多关于HarmonyOS鸿蒙Next中使用本地模拟器进行post请求,报错java.net.ConnectException: Failed to connect to /192.168.153.2:13072(内网环境),但是使用postman可以请求成功的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

您好,您的问题需要进一步定位,请您通过在线提单进一步解决:https://developer.huawei.com/consumer/cn/support/feedback/#/,感谢您的反馈和支持。

更多关于HarmonyOS鸿蒙Next中使用本地模拟器进行post请求,报错java.net.ConnectException: Failed to connect to /192.168.153.2:13072(内网环境),但是使用postman可以请求成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中使用本地模拟器进行POST请求时,报错java.net.ConnectException: Failed to connect to /192.168.153.2:13072,可能有以下原因:

  1. 网络权限未配置:检查config.json文件中是否已声明网络权限。确保ohos.permission.INTERNET权限已正确配置。

  2. 模拟器网络配置问题:本地模拟器可能存在网络配置问题,导致无法访问指定IP和端口。确保模拟器的网络环境与物理机一致,且IP地址和端口可访问。

  3. 防火墙或安全策略限制:检查防火墙或安全策略是否阻止了模拟器的网络请求。确保模拟器的网络请求未被拦截。

  4. DNS解析问题:模拟器可能无法正确解析内网IP地址。尝试使用IP地址而非域名进行请求,或检查模拟器的DNS配置。

  5. 端口占用或服务未启动:确保目标端口13072未被占用,且服务已正确启动。使用netstat或类似工具检查端口状态。

  6. 代码问题:检查代码中是否存在URL拼写错误或其他逻辑问题,确保请求地址和参数正确。

Postman可以成功请求,表明服务端和网络环境正常,问题可能出在模拟器配置或代码实现上。

在HarmonyOS鸿蒙Next中使用本地模拟器进行POST请求时,报错java.net.ConnectException: Failed to connect to /192.168.153.2:13072,可能是由于以下原因:

  1. 网络权限:确保在config.json中已添加网络权限:

    "reqPermissions": [
        {
            "name": "ohos.permission.INTERNET"
        }
    ]
    
  2. 模拟器网络配置:检查模拟器的网络配置,确保其与主机在同一网络段,并能访问目标IP。

  3. 防火墙或安全软件:确认防火墙或安全软件未阻止模拟器的网络访问。

  4. 代码问题:检查代码中URL和端口是否正确,确保请求方法为POST。

  5. 模拟器限制:某些模拟器可能有网络访问限制,尝试使用真机测试。

如果Postman可以成功请求,说明服务端正常,问题可能出在模拟器或代码配置上。

回到顶部