http接口调用

一曲冷凌霜 提交于 2019-11-26 17:00:14
import org.testng.annotations.Test;
public class HttpTest {
String creatOrderUrl="http://xxx.xxx.net/scriptParams/runScripts?ids=2303";
@Test  //可以直接运行了,注意调用http接口,都不能继承别的接口(例如hsf),public void testCrestOrder() {    System.out.println("url=="+creatOrderUrl);//    httpRequest(creatOrderUrl);    //System.out.println("url2=="+httpRequest(creatOrderUrl));}
/**get请求*/public static String httpRequest(String req_url) {    StringBuffer buffer = new StringBuffer();    try {        URL url = new URL(req_url);        HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();        httpUrlConn.setDoOutput(false);        httpUrlConn.setDoInput(true);        httpUrlConn.setUseCaches(false);        httpUrlConn.setRequestMethod("GET");        httpUrlConn.connect();        // 将返回的输入流转换成字符串        InputStream inputStream = httpUrlConn.getInputStream();        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);        String str = null;        while ((str = bufferedReader.readLine()) != null) {            buffer.append(str);        }        bufferedReader.close();        inputStreamReader.close();        // 释放资源        inputStream.close();        inputStream = null;        httpUrlConn.disconnect();    } catch (Exception e) {        System.out.println(e.getStackTrace());    }    return buffer.toString();}
/**POST 请求 * *//** * 向指定 URL 发送POST方法的请求 * * @param url *            发送请求的 URL * @param param *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @param isproxy *               是否使用代理模式 * @return 所代表远程资源的响应结果 */public static String sendPost(String url, String param,boolean isproxy) {    OutputStreamWriter out = null;    BufferedReader in = null;    String result = "";    try {        URL realUrl = new URL(url);        HttpURLConnection conn = null;        if(isproxy){//使用代理模式            @SuppressWarnings("static-access")            Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));            conn = (HttpURLConnection) realUrl.openConnection(proxy);        }else{            conn = (HttpURLConnection) realUrl.openConnection();        }        // 打开和URL之间的连接        // 发送POST请求必须设置如下两行        conn.setDoOutput(true);        conn.setDoInput(true);        conn.setRequestMethod("POST");    // POST方法        // 设置通用的请求属性        conn.setRequestProperty("accept", "*/*");        conn.setRequestProperty("connection", "Keep-Alive");        conn.setRequestProperty("user-agent",                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");        conn.connect();        // 获取URLConnection对象对应的输出流        out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");        // 发送请求参数        out.write(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;}/** * 发送Http post请求 * * @param xmlInfo *            json转化成的字符串 * @param URL *            请求url * @return 返回信息 */public static String doHttpPost(String xmlInfo, String URL) {    System.out.println("发起的数据:" + xmlInfo);    byte[] xmlData = xmlInfo.getBytes();    InputStream instr = null;    java.io.ByteArrayOutputStream out = null;    try {        URL url = new URL(URL);        URLConnection urlCon = url.openConnection();        urlCon.setDoOutput(true);        urlCon.setDoInput(true);        urlCon.setUseCaches(false);        urlCon.setRequestProperty("content-Type", "application/json");        urlCon.setRequestProperty("charset", "utf-8");        urlCon.setRequestProperty("Content-length",                String.valueOf(xmlData.length));        System.out.println(String.valueOf(xmlData.length));        DataOutputStream printout = new DataOutputStream(                urlCon.getOutputStream());        printout.write(xmlData);        printout.flush();        printout.close();        instr = urlCon.getInputStream();        byte[] bis = IOUtils.toByteArray(instr);        String ResponseString = new String(bis, "UTF-8");        if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {            System.out.println("返回空");        }        System.out.println("返回数据为:" + ResponseString);        return ResponseString;    } catch (Exception e) {        e.printStackTrace();        return "0";    } finally {        try {            out.close();            instr.close();        } catch (Exception ex) {            return "0";        }    }}方法二:/** * 向指定 URL 发送POST方法的请求 * * @param url *            发送请求的 URL * @param param *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */public static String sendPostNew(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 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");        // 发送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;}}注意事项:如果调用post接口,返回报错405(连接被拒绝),把post改成GET即可,原因是后台要求是GET请求,发送post请求肯定会被拒绝。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!