java程序,要调用一个https的POST的api,两个参数Referer和stime写的类型是HEAD,两个参数userName和passWord写的类型是BODY。
我用HttpsURLConnection来传参,getResponseCode总是报500,问了系统开发,他觉得是我传参的时候好像不太对,传到url上去了,我在网上查了半天也没看明白body传参到底应该怎么传,求助大佬赐教。
补充:同样的代码,我用百度的地址,就能获得200回复应该是成功了。
public static void kkk() throws IOException {
SKIP skip = new SKIP();//尝试避开证书
try {
skip.ignoreSsl();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String httpsURL = "https://10.19.85.113:8003/v1/login";
URL myurl = new URL(httpsURL);
HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
con.setRequestMethod("POST");
long stime1=System.currentTimeMillis();
String s=stime1+"";
String r = "https://10.19.85.113/gdas";
con.setRequestProperty("Content-Type","application/json; charset=utf-8");
con.setRequestProperty("Referer",r);
con.setRequestProperty("stime",s);
con.setDoOutput(true);
con.setDoInput(true);
String query = "{\"userName\":\"system\",\"passWord\":\"EHL_bluray123!@#\"}";
con.connect();
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream(),"UTF-8");
writer.write(query);
System.out.print(query);
writer.flush();
//output.writeChars(query);
//query=test.toString();
//System.out.print(query+"\n");
//output.write(query.getBytes());
//output.close();
//DataInputStream input = new DataInputStream( con.getInputStream());
//for( int c = input.read(); c != -1; c = input.read() )
//System.out.print( (char)c );
//input.close();
System.out.println("Resp Code:"+con.getResponseCode());
System.out.println("Resp Message:"+ con.getResponseMessage());
`public class HTTPClassExample{ public static void main(String[] args) { try{ URL url = new URL("http://localhost:4567/"); HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); httpCon.setDoOutput(true); httpCon.setRequestMethod("POST"); httpCon.connect(); OutputStream os = httpCon.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8"); osw.write("Just Some Text"); System.out.println(httpCon.getResponseCode()); System.out.println(httpCon.getResponseMessage()); osw.flush(); osw.close(); }catch(Exception ex){ ex.printStackTrace(); } } }
看了下没看出有啥问题,不过还是用个http封装吧,功能更强用起来也方便