java访问其他项目接口

    现在调用其他项目的接口用的比较多的应该是webservice和httpclient这类的吧,我现在做的项目还是比较老的那种,用的还是java自带的包里面  的HttpURLConnection类,HttpURLConnection位于rt.jar下的 java.net下


	public String loadJSONFforISP(String url) {
		StringBuilder json = new StringBuilder(); //返回json数据
		String ISPTimeOut = DictionaryUtils.codeToName("ISP","ISPTimeOut");//设置响应时间
		try {
			URL u = new URL(url);//设置url
			HttpURLConnection yc = (HttpURLConnection) u.openConnection();//设置请求相关参数
			yc.setRequestMethod("GET");
			 yc.setDoOutput(true);
			 yc.setDoInput(true);
			yc.setAllowUserInteraction(false);
			yc.setUseCaches(false);
			yc.setConnectTimeout(Integer.parseInt(ISPTimeOut));
			yc.setRequestProperty("Accept-Charset", "utf-8");
			yc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
			yc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
			yc.connect();
			BufferedInputStream bis = new BufferedInputStream(yc.getInputStream());
			BufferedReader in = new BufferedReader(new InputStreamReader(bis, "utf-8"));
			String inputLine = null;
			while ((inputLine = in.readLine()) != null) {
				json.append(inputLine);
			}
			in.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	 return json.toString();
	}

        返回的json用

OSPResponseResult data = new OSPResponseResult();
        data=JSON.deserialize(json, data.getClass());

        用对象接住,记住根据json返回的数据格式来建立接的对象   打比方是这种

{"data":[     {"channel":"CM","username":"000002079                     ","city":"SH                  ","phone":"18611192345    ","agency":"G00000147","office":"YA01  ","rank":"A1","to_be_rank":"  ","status":"A","mon_att_ra":"87.50","eafiller3":"NYI0ACMNNNNBY NYYY Y"}],"success":"true","message":"查找成功"}

        数组里面数据就得用一个list来接  还要记住对象名要跟返回的json数据名一样

上面用的是get方式,下面是post方式

                try {
                        //请求对象参数
						String str = JSON.serialize(req);
						url = getURL(req.getCo(),"Y");
						URL u = new URL(url);//访问路径
						HttpURLConnection yc = (HttpURLConnection) u.openConnection();
						yc.setRequestMethod("POST");
						// yc.setRequestProperty("Content-type", "application/json");
						yc.setDoOutput(true);
						yc.setDoInput(true);
						yc.setUseCaches(false); // 设置是否缓存
						//设置超时
						yc.setConnectTimeout(Integer.parseInt(NBTimeOut));
						yc.setReadTimeout(Integer.parseInt(NBTimeOut));
						OutputStream outputStream = yc.getOutputStream();
						outputStream.write(str.getBytes("UTF-8"));
						outputStream.close();
						BufferedReader in = new BufferedReader(new InputStreamReader(
								yc.getInputStream(), "UTF-8"));
						String inputLine = null;
						while ((inputLine = in.readLine()) != null) {
							json.append(inputLine);
						}
						logger.info("loadJSON  Spare end");
						in.close();
				} catch (Exception e) {
					logger.error(e.getMessage(), e);
					logger.error("loadJSON入参:"+url);
				}
		

		return json.toString();

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ps:主要解决在webservice中,我们想从另外一个项目调用webservice项目接口,也就是跨项目调用接口 这里主要用到了xfire wsdl 废话不说了 直接上东西 1. 首先新建一个项目 2. 在src下创建两个文件: a) 第一个是你想要访问的webservice的接口,比如我想访问接口是 ReleaseService 那就在当前项目创建一个ReleaseService接口(接口中的方法必须和你想要访问的webservice的接口中的方法相同) b) 第二个是你的调用类 3. 导入相应的jar包,这些包不能引用,一定要复制到lib文件夹下面在引用 4. 具体的实现代码 TestWebService方法的代码: package com.isanta.webServiceTest; import java.io.InputStream; import java.net.MalformedURLException; import java.util.Properties; import java.util.Scanner; import org.codehaus.xfire.XFireFactory; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; public class TestWebService { /** * @param args */ public static void testWebService() throws MalformedURLException, Exception{ // TODO Auto-generated method stub /** *这里是我的参数放在了properties文件中,我在读取里面的参数,这里我们也可以通过方法传参数 *如 : testWebService(String url,String xMlStr)() 那么在调用的时候就可以直接传进来了 *url 是你访问的webservice 的tomcat 的服务器地址 */ Properties pro = new Properties(); InputStream in = null; in = TestWebService.class.getResourceAsStream("/request.properties"); pro.load(in); String url = pro.getProperty("url"); String xMLstr = pro.getProperty("xMLstr"); Service s=new ObjectServiceFactory().create(ReleaseService.class); XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire()); System.out.println("url="+url); try { //这里就是获取webservice的接口的实例对象 ReleaseService seleaseService=(ReleaseService) xf.create(s,url); System.out.println("进入接口----------------->请求报文:"+xMLstr); //这里就是调用你需要的接口的方法 String st=seleaseService.queryReceiptDatas(xMLstr); System.out.print(st); } catch(Exception e) { e.printStackTrace(); } } } 5. 将整个项目打包成jar 6. 将打好的jar包引入到你想要调用的项目中,然后就想 正常的代码一样来调用,如: import java.net.MalformedURLException; import com.isanta.webServiceTest.TestWebService; public class Test { public static void main(String[] args) throws MalformedURLException, Exception { TestWebService.testWebService(); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值