一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java的。后台调用httpurlconnection的类模拟浏览器请求的方法可用于接口调用分享给大家供大家参考
写在前面:
项目是java web,jdk1.4,weblogic 7;对方.net系统,用wcf开发的接口。对方提供接口url地址,以及说明用post方式去调用,无需传递参数,直接返回json array(json数组格式的数据)
调用接口的方法有很多中,框架调用,ajax调用,urlconnection等等.由于项目需要,需要远程调用对方.net系统的接口,其接口是用wcf开发的,然后我们这边的系统是java,并且jdk是1.4,所以主流的一些框架调用已经用不了了,一般要jdk1.6以上才可以。说到这里,axis是可以适用于jdk1.4的,但是当采用客户端生成代码的方式的时候,我生成的类有缺少,不知道为啥,果断放弃;然后由于是跨域调用接口(也就是双方的系统不在一个服务器里面),并且需要post方式去访问,故ajax的方式也不行,因为ajax不支持跨域,当然利用jsonp是可以跨域的,但是它是采用get方式访问的。在挣扎尝试了两三天后,求助贴吧大神,大神跟我语音,让我用httpurlconnection的方式去访问,也就是urlconnection调用接口。之后,我又拿出了传智播客的webservice的视频笔记,上面也有提及到采用urlconnection调用接口,于是我就打算试试。成功啦......真是强大哈。。。(貌似这种方式可以适用于各种接口的调用,也可以调用webservice,大家都可以试一试,遇到问题不要怕,啊哈哈哈。。。。。)
1.准备工作:
对于urlconnection调用接口貌似不需要导入任何相关的jar包,这个要根据项目来定。这里返回的是json数组的字符串,所以这里我要用到json相关的jar来进行获取。导入json的jar包就可以了。
代码:可以自己先写一个main java程序来连接测试一下,然后再放到具体的项目上去进行调用。
url url = url(http://10.10.10.83/getprojectnameservice/getprojectnameservice.svc/getprojectnameurlconnection conn =httpurlconnection httpconn =system.setproperty(sun.net.client.defaultconnecttimeout, 30000sun.net.client.defaultreadtimeout, 30000httpconn.setdoinput(httpconn.setusecaches(httpconn.setrequestmethod(postoutputstream out =objectoutputstream objout = string(inputstream in =stringbuffer sb = = = (httpconn.getresponsecode() == 200bufferedreader reader = bufferedreader( inputstreamreader(in,utf-8= ((line = reader.readline()) != =返回结果:+jarr = ( i=0;i
