2
回答
java java.net.URL访问操作 求大神

PrintWriter out = null;

        BufferedReader in = null;
        String result = "";
        try {
URL realUrl = new URL("http://123.57.68.55:8888/services/userBase/associatedWxUser");
         // 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
         // 设置通用的请求属性
         conn.setRequestProperty("Content-Type", "application/json");
         // 发送POST请求必须设置如下两行
         conn.setDoOutput(true);
         conn.setDoInput(true);
         // 获取URLConnection对象对应的输出流
         out = new PrintWriter(conn.getOutputStream());
         // 发送请求参数
         out.print("{wxAccount:"+"123"+",pcAccount:"+"13507319973"+"}");
         // flush输出流的缓冲
         out.flush();
         // 定义BufferedReader输入流来读取URL的响应
         in = new BufferedReader(
                 new InputStreamReader(conn.getInputStream()));
         String line;
         while ((line = in.readLine()) != null) {
             result += line;
         }
     } catch (Exception e) {
         System.out.println("发送 POST 请求出现异常!"+e);
         e.printStackTrace();
     }
     //使用finally块来关闭输出流、输入流
     finally{
         try{
             if(out!=null){
                 out.close();
             }
             if(in!=null){
                 in.close();
             }
         }
         catch(IOException ex){
             ex.printStackTrace();
         }

     }



上图的url访问操作用java的url操作去访问  我这样的写法不知道是什么问题  求大神帮忙看看。

举报
K老
发帖于2年前 2回/150阅
共有2个答案 最后回答: 2年前

上面POST请求的代码除了参数处理的地方,其他位置基本是OK的

// 发送请求参数
out.print("{wxAccount:"+"123"+",pcAccount:"+"13507319973"+"}");

应改为:out.print("wxAccount="+"123"+"&pcAccount="+"13507319973");

其他通用属性最好也能进行配置,比如accept,connection,user-agent之类的,否则有可能被反爬虫的配置拦截掉或产生其他问题。

另外楼上说的对,这里如果不是学习代码的话最好不要自己控制,调用第三方的HttpClient之类会更有保障,自己写很容易留下BUG坑了自己或别人


--- 共有 1 条评论 ---
K老嗯嗯 谢谢 已经改成HttpClient了 2年前 回复
顶部