java里调用的接口代码 java接口代码实例
java调用c++接口
pre{ overflow-x: auto} 1、编写Java程序:HelloWorld
代码如下:
package HelloWorld; public class HelloWorld { public native void sayHello(); public static void main(String[] args) { System.loadLibrary("Win32Project1"); HelloWorld tNative = new HelloWorld(); tNative.sayHello(); } }
2、Windows环境下,在cmd中编译以上程序
编译通过后,使用 javah -jni HelloWorld.HelloWorld命令,在src文件夹下生成HelloWorld_HelloWorld.h文件(注意,此处两个HelloWorld,前一个指包名,后一个指类名)。
在执行完这一步后,能够看到HelloWorld.java、HelloWorld.class、HelloWorld_HelloWorld.h这三个文件是位于同一个src文件夹下的,如下图所示(注意,此处的src文件夹是在eclipse中创建HelloWorld这个java project时自动生成的,并非手动创建的):
3、编写C++程序
打开Visual Studio 2013,执行“文件—新建—项目—Visual C++—Win32 项目—确定—下一步–选择DLL(D)–完成”。
注意,设置好项目名称以及项目文件所在的位置,如下图标红处所示:
创建好项目之后,将之前生成的HelloWorld_HelloWorld.h头文件添加到项目的“头文件”中,并在源文件中添加helloworld.cpp这一文件,如下图所示:
接下来,在helloworld.cpp文件中输入以下代码: // helloworld.cpp : 定义DLL应用程序的导出函数。 // #include "stdafx.h" #include "HelloWorld_HelloWorld.h" #include using namespace std; JNIEXPORT void JNICALL Java_HelloWorld_HelloWorld_sayHello(JNIEnv *, jobject) { cout
JAVA怎么调用接口?
String sendPost(String jsonStr, String path)\x0d\x0a throws IOException { \x0d\x0a byte[] data = jsonStr.getBytes(); \x0d\x0a java点虐.URL url = new java点虐.URL(path); \x0d\x0a java点虐.HttpURLConnection conn = \x0d\x0a (java点虐.HttpURLConnection) url.openConnection(); \x0d\x0a conn.setRequestMethod("POST"); \x0d\x0a conn.setConnectTimeout(5 * 1000); // 设置连接超时时间为5秒 \x0d\x0a conn.setReadTimeout(20 * 1000); // 设置读取超时时间为20秒 \x0d\x0a // 使用 URL 连接进行输出,则将 DoOutput标志设置为 true\x0d\x0a conn.setDoOutput(true); \x0d\x0a \x0d\x0a conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8"); \x0d\x0a //conn.setRequestProperty("Content-Encoding","gzip"); \x0d\x0a conn.setRequestProperty("Content-Length", String.valueOf(data.length)); \x0d\x0a OutputStream outStream = conn.getOutputStream(); // 返回写入到此连接的输出流\x0d\x0a outStream.write(data); \x0d\x0a outStream.close(); //关闭流\x0d\x0a String msg = ""; // 保存调用http服务后的响应信息\x0d\x0a // 如果请求响应码是200,则表示成功\x0d\x0a if (conn.getResponseCode() == 200) { \x0d\x0a // HTTP服务端返回的编码是UTF-8,故必须设置为UTF-8,保持编码统一,否则会出现中文乱码\x0d\x0a BufferedReader in = new BufferedReader(new InputStreamReader(\x0d\x0a (InputStream) conn.getInputStream(), "UTF-8")); \x0d\x0a msg = in.readLine(); \x0d\x0a in.close(); \x0d\x0a } \x0d\x0a conn.disconnect(); // 断开连接\x0d\x0a return msg; \x0d\x0a }
怎么用java调用微信支付接口
java调用微信支付接口方法:\x0d\x0aRequestHandlerrequestHandler=newRequestHandler(super.getRequest(),super.getResponse()); \x0d\x0a\x0d\x0a//获取token//两小时内有效,两小时后重新获取\x0d\x0a\x0d\x0aToken=requestHandler.GetToken(); \x0d\x0a\x0d\x0a//更新token到应用中\x0d\x0a\x0d\x0arequestHandler.getTokenReal(); \x0d\x0a\x0d\x0aSystem.out.println("微信支付获取token=======================:"+Token); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//requestHandler初始化\x0d\x0a\x0d\x0arequestHandler.init(); \x0d\x0a\x0d\x0arequestHandler.init(appid,appsecret,appkey,partnerkey,key); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//--------------------------------本地系统生成订单-------------------------------------\x0d\x0a\x0d\x0a//设置package订单参数\x0d\x0a\x0d\x0aSortedMappackageParams=newTreeMap(); \x0d\x0a\x0d\x0apackageParams.put("bank_type","WX"); //支付类型\x0d\x0a\x0d\x0apackageParams.put("body","xxxx"); //商品描述\x0d\x0a\x0d\x0apackageParams.put("fee_type","1"); //银行币种\x0d\x0a\x0d\x0apackageParams.put("input_charset","UTF-8"); //字符集\x0d\x0a\x0d\x0apackageParams.put("notify_url",""); //通知地址这里的通知地址使用外网地址测试,注意80端口是否打开。\x0d\x0a\x0d\x0apackageParams.put("out_trade_no",no); //商户订单号\x0d\x0a\x0d\x0apackageParams.put("partner",partenerid); //设置商户号\x0d\x0a\x0d\x0apackageParams.put("spbill_create_ip",super.getRequest().getRemoteHost()); //订单生成的机器IP,指用户浏览器端IP\x0d\x0a\x0d\x0apackageParams.put("total_fee",String.valueOf(rstotal)); //商品总金额,以分为单位\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//设置支付参数\x0d\x0a\x0d\x0aSortedMapsignParams=newTreeMap(); \x0d\x0a\x0d\x0asignParams.put("appid",appid); \x0d\x0a\x0d\x0asignParams.put("noncestr",noncestr); \x0d\x0a\x0d\x0asignParams.put("traceid",PropertiesUtils.getOrderNO()); \x0d\x0a\x0d\x0asignParams.put("timestamp",timestamp); \x0d\x0a\x0d\x0asignParams.put("package",packageValue); \x0d\x0a\x0d\x0asignParams.put("appkey",this.appkey); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成支付签名,要采用URLENCODER的原始值进行SHA1算法!\x0d\x0a\x0d\x0aStringsign=""; \x0d\x0a\x0d\x0atry{ \x0d\x0a\x0d\x0asign=Sha1Util.createSHA1Sign(signParams); \x0d\x0a\x0d\x0a} catch(Exceptione){ \x0d\x0a\x0d\x0ae.printStackTrace(); \x0d\x0a\x0d\x0a} \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//增加非参与签名的额外参数\x0d\x0a\x0d\x0asignParams.put("sign_method","sha1"); \x0d\x0a\x0d\x0asignParams.put("app_signature",sign); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//api支付拼包结束------------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//获取prepayid\x0d\x0a\x0d\x0aStringprepayid=requestHandler.sendPrepay(signParams); \x0d\x0a\x0d\x0aSystem.out.println("prepayid:"+prepayid); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//--------------------------------生成完成---------------------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成预付快订单完成,返回给android,ios掉起微信所需要的参数。\x0d\x0a\x0d\x0aSortedMappayParams=newTreeMap(); \x0d\x0a\x0d\x0apayParams.put("appid",appid); \x0d\x0a\x0d\x0apayParams.put("noncestr",noncestr); \x0d\x0a\x0d\x0apayParams.put("package","Sign=WXPay"); \x0d\x0a\x0d\x0apayParams.put("partnerid",partenerid); \x0d\x0a\x0d\x0apayParams.put("prepayid",prepayid); \x0d\x0a\x0d\x0apayParams.put("appkey",this.appkey); \x0d\x0a\x0d\x0a//这里除1000是因为参数长度限制。\x0d\x0a\x0d\x0ainttime=(int)(System.currentTimeMillis()/1000); \x0d\x0a\x0d\x0apayParams.put("timestamp",String.valueOf(time)); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("timestamp:"+time); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//签名\x0d\x0a\x0d\x0aStringpaysign=""; \x0d\x0a\x0d\x0atry{ \x0d\x0a\x0d\x0apaysign=Sha1Util.createSHA1Sign(payParams); \x0d\x0a\x0d\x0a} catch(Exceptione){ \x0d\x0a\x0d\x0ae.printStackTrace(); \x0d\x0a\x0d\x0a} \x0d\x0a\x0d\x0apayParams.put("sign",paysign); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//拼json数据返回给客户端\x0d\x0a\x0d\x0aBasicDBObjectbackObject=newBasicDBObject(); \x0d\x0a\x0d\x0abackObject.put("appid",appid); \x0d\x0a\x0d\x0abackObject.put("noncestr",payParams.get("noncestr")); \x0d\x0a\x0d\x0abackObject.put("package","Sign=WXPay"); \x0d\x0a\x0d\x0abackObject.put("partnerid",payParams.get("partnerid")); \x0d\x0a\x0d\x0abackObject.put("prepayid",payParams.get("prepayid")); \x0d\x0a\x0d\x0abackObject.put("appkey",this.appkey); \x0d\x0a\x0d\x0abackObject.put("timestamp",payParams.get("timestamp")); \x0d\x0a\x0d\x0abackObject.put("sign",payParams.get("sign")); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aStringbackstr=dataObject.toString(); \x0d\x0a\x0d\x0aSystem.out.println("backstr:"+backstr); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0areturnbackstr; \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a====================到此为止,预付款订单已生成,并且已返回客户端====================\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//坐等微信服务器通知,通知的地址就是生成预付款订单的notify_url\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aResponseHandlerresHandler=newResponseHandler(request,response); \x0d\x0a\x0d\x0aresHandler.setKey(partnerkey); \x0d\x0a\x0d\x0a//创建请求对象\x0d\x0a\x0d\x0a//RequestHandlerqueryReq=newRequestHandler(request,response); \x0d\x0a\x0d\x0a//queryReq.init(); \x0d\x0a\x0d\x0aif(resHandler.isTenpaySign()==true){ \x0d\x0a\x0d\x0a//商户订单号\x0d\x0a\x0d\x0aStringout_trade_no=resHandler.getParameter("out_trade_no"); \x0d\x0a\x0d\x0aSystem.out.println("out_trade_no:"+out_trade_no); \x0d\x0a\x0d\x0a//财付通订单号\x0d\x0a\x0d\x0aStringtransaction_id=resHandler.getParameter("transaction_id"); \x0d\x0a\x0d\x0aSystem.out.println("transaction_id:"+transaction_id); \x0d\x0a\x0d\x0a//金额,以分为单位\x0d\x0a\x0d\x0aStringtotal_fee=resHandler.getParameter("total_fee"); \x0d\x0a\x0d\x0a//如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee\x0d\x0a\x0d\x0aStringdiscount=resHandler.getParameter("discount"); \x0d\x0a\x0d\x0a//支付结果\x0d\x0a\x0d\x0aStringtrade_state=resHandler.getParameter("trade_state"); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//判断签名及结果\x0d\x0a\x0d\x0aif("0".equals(trade_state)){ \x0d\x0a\x0d\x0a//------------------------------\x0d\x0a\x0d\x0a//即时到账处理业务开始\x0d\x0a\x0d\x0a//------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("----------------业务逻辑执行-----------------"); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——\x0d\x0a\x0d\x0aSystem.out.println("----------------业务逻辑执行完毕-----------------"); \x0d\x0a\x0d\x0aSystem.out.println("success"); //请不要修改或删除\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("即时到账支付成功"); \x0d\x0a\x0d\x0a//给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知\x0d\x0a\x0d\x0aresHandler.sendToCFT("success"); \x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//给微信服务器返回success否则30分钟通知8次\x0d\x0a\x0d\x0areturn"success"; \x0d\x0a\x0d\x0a} else{ \x0d\x0a\x0d\x0aSystem.out.println("通知签名验证失败"); \x0d\x0a\x0d\x0aresHandler.sendToCFT("fail"); \x0d\x0a\x0d\x0aresponse.setCharacterEncoding("utf-8"); \x0d\x0a\x0d\x0a} \x0d\x0a\x0d\x0a} else{ \x0d\x0a\x0d\x0aSystem.out.println("fail-Md5failed");
java如何调用webservice接口
Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
package com.yudun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java点虐.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//标识Web Service的具体路径
String endpoint = "WebService服务地址";
// 创建 Service实例
Service service = new Service();
// 通过Service实例创建Call的实例
Call call = (Call) service.createCall();
//将Web Service的服务路径加入到call实例之中.
call.setTargetEndpointAddress( new java点虐.URL(endpoint) ); //为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName("", "string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("", "return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
"Exception",
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
true
));
call.setOperation( oper );
call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));
//调用Web Service,传入参数
String res = ( String ) call.invoke( new Object[]("arg0","arg1"));
System.out.println("===============");
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(getResult());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
}
2、利用Eclipse自动生成WebService client代码就容易多了:(由于还不会发图片,就用语言描述了,大家酬和看吧。。。)
首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish
这样,WebService Client代码已经生成好了。
接下来写一个Test类,在main函数中输入如下代码:
String endpoint = "服务器的WebService的地址";
YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);
try {
String resultStr = umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
} catch (Exception e) {
System.out.println("异常");
e.printStackTrace();
} catch (RemoteException e) {
System.out.println("RemoteException异常");
e.printStackTrace();
}
如果还有疑问的话还有视频,如果对你有帮助请采纳!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: java里调用的接口代码 java接口代码实例
本文地址: https://pptw.com/jishu/1541.html