java 接口调用,根据接口文档写测试,用post方法,刚怎么做啊,有个完整的例子么

java 接口调用,根据接口文档写测试,用post方法,刚怎么做啊,有个完整的例子么,第1张

可使用android自带的httpclient框架实现。

1 GET 方式传递参数

//先将参数放入List,再对参数进行URL编码

List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();

paramsadd(new BasicNameValuePair("param1", "数据")); //增加参数1

paramsadd(new BasicNameValuePair("param2", "value2"));//增加参数2

String param = URLEncodedUtilsformat(params, "UTF-8");//对参数编码

String baseUrl = "服务器接口完整URL";

HttpGet getMethod = new HttpGet(baseUrl + "" + param);//将URL与参数拼接

HttpClient httpClient = new DefaultHttpClient();

try {

HttpResponse response = httpClientexecute(getMethod); //发起GET请求

Logi(TAG, "resCode = " + responsegetStatusLine()getStatusCode()); //获取响应码

Logi(TAG, "result = " + EntityUtilstoString(responsegetEntity(), "utf-8"));//获取服务器响应内容

} catch (ClientProtocolException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

2 POST方式 方式传递参数

//和GET方式一样,先将参数放入List

params = new LinkedList<BasicNameValuePair>();

paramsadd(new BasicNameValuePair("param1", "Post方法"));//增加参数1

paramsadd(new BasicNameValuePair("param2", "第二个参数"));//增加参数2

try {

HttpPost postMethod = new HttpPost(baseUrl);//创建一个post请求

postMethodsetEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中

HttpResponse response = httpClientexecute(postMethod); //执行POST方法

Logi(TAG, "resCode = " + responsegetStatusLine()getStatusCode()); //获取响应码

Logi(TAG, "result = " + EntityUtilstoString(responsegetEntity(), "utf-8")); //获取响应内容

} catch (UnsupportedEncodingException e) {

eprintStackTrace();

} catch (ClientProtocolException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

接口可以看成是没有实例域的抽象类,是为了实现Java多重继承的功能。

接口可以将做什么和怎么做分离开,接口定义要做什么,通过implements Interface的类实现接口的function。

也就是这个类具有这个接口的方法,我们可以通过实例化这个类的对象,调用其所具有的接口的方法和自身的方法。

String sendPost(String jsonStr, String path)\x0d\ throws IOException {\x0d\ byte[] data = jsonStrgetBytes();\x0d\ javanetURL url = new javanetURL(path);\x0d\ javanetHttpURLConnection conn = \x0d\ (javanetHttpURLConnection) urlopenConnection();\x0d\ connsetRequestMethod("POST");\x0d\ connsetConnectTimeout(5 1000);// 设置连接超时时间为5秒 \x0d\ connsetReadTimeout(20 1000);// 设置读取超时时间为20秒 \x0d\ // 使用 URL 连接进行输出,则将 DoOutput标志设置为 true\x0d\ connsetDoOutput(true);\x0d\ \x0d\ connsetRequestProperty("Content-Type", "text/xml;charset=UTF-8");\x0d\ //connsetRequestProperty("Content-Encoding","gzip");\x0d\ connsetRequestProperty("Content-Length", StringvalueOf(datalength));\x0d\ OutputStream outStream = conngetOutputStream();// 返回写入到此连接的输出流\x0d\ outStreamwrite(data);\x0d\ outStreamclose();//关闭流\x0d\ String msg = "";// 保存调用http服务后的响应信息\x0d\ // 如果请求响应码是200,则表示成功\x0d\ if (conngetResponseCode() == 200) {\x0d\ // HTTP服务端返回的编码是UTF-8,故必须设置为UTF-8,保持编码统一,否则会出现中文乱码\x0d\ BufferedReader in = new BufferedReader(new InputStreamReader(\x0d\ (InputStream) conngetInputStream(), "UTF-8"));\x0d\ msg = inreadLine();\x0d\ inclose();\x0d\ }\x0d\ conndisconnect();// 断开连接\x0d\ return msg;\x0d\ }

hMailServer 是接口 他的实现子类是Mail;

在java中调用就是: hMailServer hms= new Mail();

接口:

public interface HmailServer {

public void run();

}

实现类

public class Mail implements HmailServer{

@Override

public void run() {

Systemoutprintln("跑跑");

}

public static void main(String[] args) {

HmailServer hms=new Mail();

hmsrun();

}

}

运行结果:跑跑

书写步骤 一般分为以下:

1、 编写带有native声明的方法的java类

2、 使用javac命令编译所编写的java类

3、 使用javah jni java类名生成扩展名为h的头文件

4、 使用C/C++实现本地方法

5、 将C/C++编写的文件生成动态连接库

给你看看以前写的获取电话号码归属地的代码的三种方法,然后你就懂了。

import javaioByteArrayOutputStream;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStream;

import javanetHttpURLConnection;

import javanetURL;

import orgapachecommonshttpclientHttpClient;

import orgapachecommonshttpclientHttpException;

import orgapachecommonshttpclientmethodsPostMethod;

public class MobileCodeService {

    public void httpGet(String mobile,String userID) throws Exception

    {

        //http://wswebxmlcomcn/WebServices/MobileCodeWSasmx/getMobileCodeInfomobileCode=string&userID=string 

       URL url = new URL("http://wswebxmlcomcn/WebServices/MobileCodeWSasmx/getMobileCodeInfomobileCode="+mobile+"&userID="+userID);

       HttpURLConnection conn =(HttpURLConnection)urlopenConnection();

       connsetConnectTimeout(5000);

       connsetRequestMethod("GET");

       

       if(conngetResponseCode()==HttpURLConnectionHTTP_OK)  //200

       {

          InputStream is= conngetInputStream();

          

          ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();  //

          

          byte [] buf = new byte[1024];

          int len = -1;

          while((len = isread(buf))!=-1)

          {

              //获取结果

              arrayOutputStreamwrite(buf, 0, len);

          }

          

          Systemoutprintln("Get方式获取的数据是:"+arrayOutputStreamtoString());

          arrayOutputStreamclose();

          isclose();

       }

    }

    

    

    public void httpPost(String mobile,String userID) throws HttpException, IOException

    {

        //访问路径   http://wswebxmlcomcn/WebServices/MobileCodeWSasmx/getMobileCodeInfo

        //HttpClient访问

        

        HttpClient httpClient = new HttpClient();

        PostMethod pm = new PostMethod("http://wswebxmlcomcn/WebServices/MobileCodeWSasmx/getMobileCodeInfo");

        

        pmsetParameter("mobileCode", mobile);

        pmsetParameter("userID", userID);

        

        int code= httpClientexecuteMethod(pm);

        Systemoutprintln("状态码:"+code);

        

        //获取结果

        String result = pmgetResponseBodyAsString();

        Systemoutprintln("获取到的数据是:"+result);

    }

    

    public void SOAP() throws Exception

    {

        HttpClient client = new HttpClient();

        

        PostMethod method = new PostMethod("http://wswebxmlcomcn/WebServices/MobileCodeWSasmx");

        

        //设置访问方法的参数

        methodsetRequestBody(new FileInputStream("C:\\soapxml"));

        

        methodsetRequestHeader("Content-Type","text/xml; charset=utf-8");

        

        int code= clientexecuteMethod(method);

        Systemoutprintln("状态码:"+code);

        

        //获取结果

        String result = methodgetResponseBodyAsString();

        Systemoutprintln("获取到的数据是:"+result);

    }

    

    public static void main(String[] args) throws Exception {

        MobileCodeService mcs=new MobileCodeService();

        mcshttpGet("18524012513", "");

        //mcshttpPost("18524012513", "");

        //mcsSOAP();

    }

}

这个是编程中经常遇到的一些情况,下面分享一下个人的一些使用经验:

第一,jni方式调用c接口。通过将c语言接口封装为jni的方式直接供java语言调用,这个可以说是最惯用的方式。

第二,jna方式调用c接口。jna也是其中一种调用c接口的方式。使用时可以加载动态库dll或so,然后调用库中的接口。

第三,如果c接口很简单,可以将c接口编译为可执行程序,使用java直接调用可执行程序,也不失为一种简单快捷的方式。

至于以上三种方式如何调用,本回答不再赘述。

本人具有多年的java开发经验,熟悉多种框架,熟悉网络编程,熟悉java安全编程,熟悉大数据,熟悉多种安全协议,熟悉并发编程,有兴趣的同学可以互相关注,互相学习!!!

JAVA如何调用C语言接口

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java 接口调用,根据接口文档写测试,用post方法,刚怎么做啊,有个完整的例子么

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情