网络知识 娱乐 HttpUrlConnection发送url请求(后台springmvc)

HttpUrlConnection发送url请求(后台springmvc)

1.HttpURLConnection发送url请求

public class JavaRequest {n private static final String BASE_URL = "http://localhost:8080/dsdemo/";n public static String userToken = null;n public static String problemName = null;n public static String sendPost(String sufUrl, JSONObject params) {n DataOutputStream out = null;n BufferedReader in = null;n String result = "";n try {n URL realUrl = new URL(BASE_URL+sufUrl);n // 打开和URL之间的连接n HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();n connection.setDoOutput(true); n connection.setDoInput(true); n connection.setUseCaches(false); n connection.setInstanceFollowRedirects(true); n connection.setRequestMethod("POST"); // 设置请求方式 n connection.setRequestProperty("Connection", "Keep-Alive");n connection.connect();n out = new DataOutputStream (connection.getOutputStream());n // 发送请求参数,防止中文乱码n out.write(jsonToUrlParams(params).getBytes("UTF-8"));n // flush输出流的缓冲n out.flush();n // 定义BufferedReader输入流来读取URL的响应n in = new BufferedReader(new InputStreamReader(connection.getInputStream()));n String line;n while ((line = in.readLine()) != null) {n result += line;n }n } catch (Exception e) {n System.out.println("发送 POST 请求出现异常!");n e.printStackTrace();n }n //使用finally块来关闭输出流、输入流n finally{n try{n if(out!=null){n out.close();n }n if(in!=null){n in.close();n }n }n catch(IOException ex){n ex.printStackTrace();n }n }n System.out.println(result);n return result;n } n n private static String jsonToUrlParams(JSONObject params){n StringBuilder sb = new StringBuilder();n sb.append("userToken=").append(userToken);n for(Iterator<?> it = params.keys(); it.hasNext(); ){n String key = (String) it.next();n sb.append("&").append(key).append("=").append(params.get(key));n }n return sb.toString();n }n}

遗留问题:

  a.按照网上说的发送 json格式的字符串,但是后台无法接收到。所以这里将jsonObject转化成 url 参数的形式。

  b.jquery发送json格式的数据是可以接收到的。

<script type="text/javascript">n var sendData = {n username: "hjz",n password: "123"n };n (function (){n $.ajax({ n type:'post', n url:'http://localhost:8080/dsdemo/userRegister', n data: sendData, n dataType:'json', n success:function(data){ n alert(JSON.stringify(data));n } ,n error: function(data){n alert(JSON.stringify(data));n }n }); n })(); n </script>

另外可能会出现中文乱码的问题:

  a. 首先发送数据利用DataOutputStream out.write(jsonToUrlParams(params).getBytes("UTF-8"));

  b. 接收后台  response.setCharacterEncoding("utf-8");
      request.setCharacterEncoding("utf-8");

私信666领取资料