java如何接收无参数名的post数据

Python021

java如何接收无参数名的post数据,第1张

怎么会没有参数名字呢,

post 提交的时候,

是有参数的,不过他不是在url地址的后面

而是http协议把它规定了在http 头之后,在头里面,会指定内容的长度,

然后头完了。会空一行。接着写 内容。

java当然可以实现这个功能。

这要用到xml,对http协议进行解析,

通过BufferedReader:

String line

StringBuilder sb = new StringBuilder("")

while( null != ( line = bufferedReader.readLine() ) )

{

sb.append(line)

}

String postRequestBody = sb.toString()

System.out.println(postRequestBody)

package wzh.Httpimport java.io.BufferedReaderimport java.io.IOExceptionimport java.io.InputStreamReaderimport java.io.PrintWriterimport java.net.URLimport java.net.URLConnectionimport java.util.Listimport java.util.Mappublic class HttpRequest {/** * 向指定URL发送GET方法的请求 * * @param url *发送请求的URL * @param param *请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return URL 所代表远程资源的响应结果 */public static String sendGet(String url, String param) {String result = "" BufferedReader in = null try {String urlNameString = url + "?" + param URL realUrl = new URL(urlNameString) // 打开和URL之间的连接URLConnection connection = realUrl.openConnection() // 设置通用的请求属性connection.setRequestProperty("accept", "*/*") connection.setRequestProperty("connection", "Keep-Alive") connection.setRequestProperty("user-agent","Mozilla/4.0 (compatibleMSIE 6.0Windows NT 5.1SV1)") // 建立实际的连接connection.connect() // 获取所有响应头字段Map>map = connection.getHeaderFields() // 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key)) }// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream())) String line while ((line = in.readLine()) != null) {result += line }} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e) e.printStackTrace() }// 使用finally块来关闭输入流finally {try {if (in != null) {in.close() }} catch (Exception e2) {e2.printStackTrace() }}return result }/** * 向指定 URL 发送POST方法的请求 * * @param url *发送请求的 URL * @param param *请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */public static String sendPost(String url, String param) {PrintWriter out = null BufferedReader in = null String result = "" try {URL realUrl = new URL(url) // 打开和URL之间的连接URLConnection conn = realUrl.openConnection() // 设置通用的请求属性conn.setRequestProperty("accept", "*/*") conn.setRequestProperty("connection", "Keep-Alive") conn.setRequestProperty("user-agent","Mozilla/4.0 (compatibleMSIE 6.0Windows NT 5.1SV1)") // 发送POST请求必须设置如下两行conn.setDoOutput(true) conn.setDoInput(true) // 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream()) // 发送请求参数out.print(param) // 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() }}return result }}//函数调用时填入URL和参数(参数非必须)就可以获取返回的数据,发送post请求调用示例String result=HttpRequest.sendPost("/telematics/v3/weather?location=%E5%8C%97%E4%BA%AC&output=json&ak=E4805d16520de693a3fe707cdc962045","")