跳槽到今日头条的同事,跟我吐槽了,说在我们公司呆了一年,什么都学不到,用的框架还老,完全是浪费时间。但是作为一个才入职两个月的员工,我觉得我学到的东西蛮多的,也许是我太菜了。但是他跳槽之前做的这个项目,很多坑,已经让我同组的开发人员填坑填了很多天了。其实我觉得吧,不管是现在红的spring boot,还是什么,都是万变不离其宗。把自己现在的学好,学牢固。用认真的态度写好自己份内的代码才是正确的。如果做事的态度不对,到哪里都是挖坑的。
自己懒了很久,第七周的开发任务,是调用接口。把单据信息推送到服务器端。
对接口的类型,我需要做一个总结。
常见web接口:一类是http协议的接口,另一类是web service接口(如soup、rmi、rpc协议)。
常见的http请求方式包括:get(查)、post(增),除此之外还有put(改)、delete(删)。
这两个接口类型,都有用到过。第一个我是被坑惨了,提供接口的人死活不承认自己接口错误,结果我百度了很多关于接口的知识,跟他讲了很多知识点,就把他讲懂了,耽误了很多天。本来一个很简单的事情
这里有一个疑问,为什么用XMLspy请求得到的返回特殊情况下,和soapui的返回字段会有不一样的地方,这也是坑的地方在。
REQUESTCONTEXTLOADOMETER loadometer = getSrmPaySecondAuditService().getPayComCodeByKmReviewId(
main.getFdId(), main.getFdTemplate().getFdId(), flag);
RESPONSERESPONSE_HEADER responseRecord = SrmPaySecondAuditInfoGenerator.getInstance()
.sendSrmAuditInfoList(loadometer);
String code = responseRecord.getRESPONSE_RESULT();
String message = responseRecord.getRESPONSE_MESSAGE();
String status = responseRecord.getRESPONSE_STATUS();
这是WEB接口的调用,先是新建一个WSDL的document在XMLspy中,在另存为一个wsdl,在eclipse中新建客户端,生成客户端代码,在根据客户端代码去写即可。
用三个类来完成,第一个是从数据库获取数据,填充在底层的request内容层,返回值是填充的 REQUESTCONTEXTLOADOMETER,在QMS5011Qms_status_comes_backSvc_bindingStub stub = (QMS5011Qms_status_comes_backSvc_bindingStub) locator
.getPort(QMS5011Qms_status_comes_backSvc_bindingStub.class);
REQUESTHEADER header = new REQUESTHEADER(tclSapLogon.getFdUser(), SecureUtil.BASE64Decoder(tclSapLogon
.getFdPasswd()));
REQUESTCONTEXT context = new REQUESTCONTEXT(loadometer);
REQUEST request = new REQUEST(header, context);
RESPONSE response = stub.execute(request);
最后再写一个类,来接收内容即可。
第二个是http接口,是根据我传入的用户名,返回客户名字和客户代码
String urlString = "地址";
URL url = null;
try {
url = new URL(urlString);
HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
StringBuffer buffer = new StringBuffer();
String line;
Map<String,Object> resultMap=new HashMap<String,Object>();
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnect.getInputStream(), "UTF-8"));
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
JSONObject returnJson=new JSONObject();
returnJson = JSONObject.fromObject(buffer.toString());
JSONArray jsonArrayData=new JSONArray();
jsonArrayData=returnJson.getJSONArray("data");
resultMap.put("data",jsonArrayData);
List <JSONObject> dataList=(List<JSONObject>) resultMap.get("data");
List <String> customerName=new ArrayList<String>();
List <String> customerCode=new ArrayList<String>();
for(JSONObject a:dataList){
customerCode.add(a.get("customerCode").toString());
customerName.add(a.get("customerName").toString());
}
for(String b:customerCode){
System.out.println(b);
}
for(String b:customerName){
System.out.println(b);
}