快递100api_快递100api查询顺丰代码 - CSDN
精华内容
参与话题
  • 快递100企业版API调用DEMO】 最近搞个商城项目,需要打单发货和追踪物流信息,想图省事找个现成的demo改吧改吧,结果发现好多都没法直接用。最后找到快递100官方GitHub:https://github.com/kuaidi100-api 直接从...

    【快递100企业版API调用DEMO】

    最近搞个商城项目,需要打单发货和追踪物流信息,想图省事找个现成的demo改吧改吧,结果发现好多都没法直接用。最后找到快递100官方GitHub:https://github.com/kuaidi100-api

    直接从这里拉代码下来,世界清静和谐了。

    赠人玫瑰,手有余香

    展开全文
  • 利用快递100api查询快递信息

    千次阅读 2014-03-15 10:30:43
    1、利用快递100提供的免费api查询快递相关信息。这里是解析返回来的网页。快递100需要申请key,但是个人app只提供了这个,so。。。。。。。 http://www.kuaidi100.com/openapi/mobileapi.shtml 2、我在子线程里面...

    同时也分享一个火车票查询的:

    接口估计不能用了,新的接口php写的,可以研究下。

    http://www.widuu.com/archives/01/919.html

    ,欢迎吐槽。

    火车余票查询源码地址(接口已经不可用):http://download.csdn.net/detail/xxm282828/6811635

    快递查询源码地址:http://download.csdn.net/detail/xxm282828/6811617

    获取快递信息的部分内容参考了网上的一个代码。

    1、利用快递100提供的免费api查询快递相关信息。这里是解析返回来的网页。快递100需要申请key,但是个人app只提供了这个,so。。。。。。。

    http://www.kuaidi100.com/openapi/mobileapi.shtml


    2、我在子线程里面去获取信息,处理,然后利用handler更新Ui,

    最后的结果中,用了两个List<String>  一个用于存放时间,另外一个对应,存放快递物流信息,因为考虑到在后面显示的时候,时间和内容分开(原本打算,做个界面类似于淘宝里面的效果,但后来放弃了,。有时间再做个demo。请看图方框部分:


    )。

    处理数据,通过将网页元素里面的<p></p>结点里面的内容拿出来,取出需要的东西就行。但是有个地方我好像随便了点,不靠谱的做法,

     else if (tempStr.startsWith("建议操作")) {
    
    					msg = new Message();
    					msg.what = 10;
    					mHandler.sendMessage(msg);
    
    					return;
    				}


    org.jsoup.nodes.Document doc = Jsoup.parse(result);// 7409440775
    			Elements element = doc.body().getElementsByTag("p");
    			Object[] objArr = element.toArray();
    			Pattern p = Pattern.compile("<.+?>|\\>|\\·",
    					Pattern.DOTALL);
    
    			String tempStr = null;
    			ArrayList<String> timeList = new ArrayList<String>();// 存放快递的时间
    			ArrayList<String> infoList = new ArrayList<String>();// 存放快递的对应时间点的信息
    
    			for (int i = 3; i < objArr.length - 2; i++) {
    				Matcher m = p.matcher(objArr[i].toString());
    				tempStr = m.replaceAll("");
    				if (TextUtils.isEmpty(tempStr)) {
    
    					continue;
    				} else if (tempStr.startsWith("建议操作")) {
    
    					msg = new Message();
    					msg.what = 10;
    					mHandler.sendMessage(msg);
    
    					return;
    				}
    				// 2013-11-17 00:25:57 福建省泉州市石狮市公司 已收件 操作员:包叶明
    				timeList.add(new String(tempStr.substring(0, 19)));
    				infoList.add(new String(tempStr.substring(20)));
    			}


    /**
    	 * 子线程联网获取数据
    	 * 
    	 * @author xiangxm
    	 * 
    	 */
    	class MyThread extends Thread {
    
    		private HashMap<String, String> threadMap = null;
    
    		public MyThread(HashMap<String, String> map) {
    
    			threadMap = new HashMap<String, String>();
    			this.threadMap = map;
    
    		}
    
    		@Override
    		public void run() {
    
    			int rand = (int) Math.random() * 1000 + 1000;
    			String strurl = "http://wap.kuaidi100.com/q.jsp?rand=" + rand
    					+ "&id=" + threadMap.get("companyId") + "&postid="
    					+ threadMap.get("order_num") + "&fromWeb=null";
    			Message msg = new Message();
    			msg.what = WAITTING;
    			mHandler.sendMessage(msg);// http://wap.kuaidi100.com/q.jsp?rand=1000&id=aae&postid=987654321&fromWeb=null
    			String result = getData(strurl);// http://m.kuaidi100.com/index_all.html?type=yuantong&postid=7409440775
    			if (result.equals("")) {
    
    				msg = new Message();
    				msg.what = 10;
    				mHandler.sendMessage(msg);
    
    				return;
    			}
    
    			org.jsoup.nodes.Document doc = Jsoup.parse(result);// 7409440775
    			Elements element = doc.body().getElementsByTag("p");
    			Object[] objArr = element.toArray();
    			Pattern p = Pattern.compile("<.+?>|\\>|\\·",
    					Pattern.DOTALL);
    
    			String tempStr = null;
    			ArrayList<String> timeList = new ArrayList<String>();// 存放快递的时间
    			ArrayList<String> infoList = new ArrayList<String>();// 存放快递的对应时间点的信息
    
    			for (int i = 3; i < objArr.length - 2; i++) {
    				Matcher m = p.matcher(objArr[i].toString());
    				tempStr = m.replaceAll("");
    				if (TextUtils.isEmpty(tempStr)) {
    
    					continue;
    				} else if (tempStr.startsWith("建议操作")) {
    
    					msg = new Message();
    					msg.what = 10;
    					mHandler.sendMessage(msg);
    
    					return;
    				}
    				// 2013-11-17 00:25:57 福建省泉州市石狮市公司 已收件 操作员:包叶明
    				timeList.add(new String(tempStr.substring(0, 19)));
    				infoList.add(new String(tempStr.substring(20)));
    			}
    
    			Log.e("----------时间---------最后结果", timeList.toString());
    			Log.e("----------物流的详细信息---------最后结果", infoList.toString());
    			msg = new Message();
    			msg.what = FINISHED;
    			mHandler.sendMessage(msg);
    
    			if (timeList.isEmpty() || infoList.isEmpty()) {
    
    				msg = new Message();
    				msg.what = 10;
    				mHandler.sendMessage(msg);
    
    				return;
    			}
    
    			Intent intent = new Intent();
    			intent.setClass(MainActivity.this, PackageDetailInfoActivity.class);
    			intent.putStringArrayListExtra("timeList", timeList);
    			intent.putStringArrayListExtra("infoList", infoList);
    
    			Bundle bundle = new Bundle();
    			bundle.putString("companyName", infoMap.get("companyName"));// 公司名称
    			bundle.putString("companyId", infoMap.get("companyId"));
    			bundle.putString("order_num", infoMap.get("order_num"));// 运单号
    			intent.putExtras(bundle);
    			startActivity(intent);
    			overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
    
    		}
    
    	}


    获取数据方法:

    /**
    	 * 
    	 * @param strurl
    	 * @return
    	 */
    	public String getData(String strurl) {
    		String output = "";
    		URL url;
    		try {
    			url = new URL(strurl);
    			InputStream is = url.openStream();
    
    			BufferedReader buffer = new BufferedReader(new InputStreamReader(
    					is, "UTF-8"));
    
    			String tem = "";
    			while ((tem = buffer.readLine()) != null) {
    				output += tem;
    			}
    			return output;
    
    		} catch (MalformedURLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return "";
    	}


    3、handler用于刷新Ui

    private static final int WAITTING = 0;
    	private static final int FINISHED = 1;
    	private static final int ERROR = 2;
    	private ProgressDialog progressDialog;
    
    	private Handler mHandler = new Handler() {
    
    		@Override
    		public void handleMessage(Message msg) {
    
    			switch (msg.what) {
    
    			case WAITTING:
    				progressDialog.show();
    
    				break;
    			case ERROR:
    				if (progressDialog != null && progressDialog.isShowing()) {
    					progressDialog.dismiss();
    
    				}
    				break;
    			case FINISHED:
    				if (progressDialog != null && progressDialog.isShowing()) {
    					progressDialog.dismiss();
    
    				}
    
    				Common.closeKeyboardCommAct(MainActivity.this);// 关闭键盘
    				break;
    
    			case 10:
    				if (progressDialog != null && progressDialog.isShowing()) {
    					progressDialog.dismiss();
    
    				}
    				Toast.makeText(MainActivity.this, "未获取到相关信息,请验证查询条件!",
    						Toast.LENGTH_SHORT).show();
    				break;
    			}
    
    			super.handleMessage(msg);
    		}
    
    	};


    4、整个画面代码:MainActivity.java   包含:

    1. 检查网络,离线使用时候,提醒.....
    2. 选择快递公司,输入订单号,否则提醒,动画效果抖动文本框.....
    3. 利用正则表达式检查输入的单据号是否符合标准,主要是放置输入汉字等字符。因为各个快递公司,单据号包含的不一样,有的有字母有的没有。
    4. 再按一次退出程序
    	long waitTime = 2000;
    	long touchTime = 0;
    
    	@Override
    	public void onBackPressed() {
    		long currentTime = System.currentTimeMillis();
    		if ((currentTime - touchTime) >= waitTime) {
    			Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
    			touchTime = currentTime;
    		} else {
    			finish();
    		}
    	}


    package com.xiangxm.checkpackage;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import org.jsoup.Jsoup;
    import org.jsoup.select.Elements;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.content.pm.ActivityInfo;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.view.Window;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.xiangxm.cls.cls_companyinfo;
    import com.xiangxm.cls.cls_savehistory;
    import com.xiangxm.myapp.MyApplication;
    import com.xiangxm.utils.Common;
    
    public class MainActivity extends Activity implements
    		android.view.View.OnClickListener {
    
    	private LinearLayout selectCompanyLayout;
    	private Button searchBtn;
    	private Button historyBtn;
    	private EditText order_numTxt;
    	private TextView companynameTxt;
    	private TextView helpinfotext;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
    		getWindow().setUiOptions(
    				ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);
    		setContentView(R.layout.activity_main);
    
    		myApplication = MyApplication.getInstance();
    		initView();
    		Common.closeWhenOncreate(MainActivity.this);// 进入界面关闭软键盘
    
    	}
    
    	/**
    	 * 初始化界面
    	 */
    	public void initView() {
    
    		title = (TextView) findViewById(R.id.title);
    		phonenumber = (TextView) findViewById(R.id.phonenumbertxt);
    		helpinfotext = (TextView) findViewById(R.id.helpinfotext);
    		companynameTxt = (TextView) findViewById(R.id.companynametxt);
    		companynameTxt.setText("");
    		selectCompanyLayout = (LinearLayout) findViewById(R.id.companyname_layout);
    		searchBtn = (Button) findViewById(R.id.searchbtn);
    		historyBtn = (Button) findViewById(R.id.historybtn);
    		order_numTxt = (EditText) findViewById(R.id.order_numtxt);
    
    		selectCompanyLayout.setOnClickListener(this);
    		searchBtn.setOnClickListener(this);
    		historyBtn.setOnClickListener(this);
    
    		progressDialog = new ProgressDialog(this);
    		progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    		progressDialog.setMessage("正在为您查询...");
    		progressDialog.setCancelable(true);
    		progressDialog.setTitle("提示信息");
    
    		changeBtnBackground();
    		if (!Common.hasShortcut(this)) { // 创建快捷方式
    			Common.addShortcut(this);
    		}
    
    		if (!Common.onlineFlag(MainActivity.this)) {
    
    			Toast.makeText(this, "离线使用中,非联网状态不能查询订单信息!", Toast.LENGTH_SHORT)
    					.show();
    
    		}
    	}
    
    	private MyApplication myApplication;
    
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    
    		Intent intent = null;
    		if (v.getId() == R.id.searchbtn) {
    
    			if (TextUtils.isEmpty(companynameTxt.getText())) {
    
    				Animation shakeAnim = AnimationUtils.loadAnimation(
    						MainActivity.this, R.anim.shake_x);
    				this.companynameTxt.startAnimation(shakeAnim);
    
    				Toast.makeText(MainActivity.this, "您还未选择快递公司!",
    						Toast.LENGTH_SHORT).show();
    				return;
    			} else if (TextUtils.isEmpty(order_numTxt.getText())) {
    
    				Animation shakeAnim = AnimationUtils.loadAnimation(
    						MainActivity.this, R.anim.shake_x);
    				this.order_numTxt.startAnimation(shakeAnim);
    
    				Toast.makeText(MainActivity.this, "您还未输入订单号!",
    						Toast.LENGTH_SHORT).show();
    				return;
    			}
    			String order_num = order_numTxt.getText().toString().trim();
    			Pattern p = Pattern.compile("[\\da-zA-Z]+?");
    			Matcher m = p.matcher(order_num);
    			if (!m.matches()) {
    				Toast.makeText(MainActivity.this, "您的订单号不符合标准,请检查!",
    						Toast.LENGTH_SHORT).show();
    				return;
    			}
    
    			infoMap.put("order_num", order_num);
    			infoMap.put("mark", "");// 备注信息暂时存为空
    
    			new MyThread(infoMap).start();
    
    		} else if (v.getId() == R.id.companyname_layout) {
    
    			intent = new Intent();
    			intent.setClass(MainActivity.this, SelectCompanyActivity.class);
    			startActivityForResult(intent, 6);
    			overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
    		} else if (v.getId() == R.id.historybtn) {
    
    			boolean bol = cls_savehistory.checkHasDataOrNot(Common.dbh);
    			if (bol) {
    				// 可伸缩的listview
    				intent = new Intent();
    				intent.setClass(MainActivity.this,
    						CheckPackageHisActivity.class);
    				overridePendingTransition(R.anim.slide_left, R.anim.slide_right);
    				startActivity(intent);
    			} else {
    
    				Toast.makeText(MainActivity.this, "暂无历史记录!", Toast.LENGTH_SHORT)
    						.show();
    			}
    
    		}
    
    	}
    
    	HashMap<String, String> infoMap = new HashMap<String, String>();
    
    	// @Override
    	// public boolean onCreateOptionsMenu(Menu menu) {
    	// // MenuItem item = menu.add(0, SETTINGS_ID, 0, "settings");
    	// // item.setIcon(R.drawable.ic_setting);
    	// // item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    	// // return true;
    	// MenuInflater inflater = getMenuInflater();
    	// inflater.inflate(R.menu.activity_main, menu);
    	//
    	// return super.onCreateOptionsMenu(menu);
    	// }
    
    	// @Override
    	// public boolean onOptionsItemSelected(MenuItem item) {// 处理点击事件 最下面
    	// switch (item.getItemId()) {
    	// /*
    	// * case R.id.menu_settings: startActivity(new Intent(this,
    	// * SettingActivity.class)); break;
    	// */
    	//
    	// case R.id.menu_delete:
    	//
    	// new AlertDialog.Builder(this).setTitle("Action Menu Item")
    	// .setPositiveButton("确认", null)
    	// .setNegativeButton("取消", null).show();
    	//
    	// break;
    	// default:
    	// break;
    	// }
    	//
    	// return super.onOptionsItemSelected(item);
    	// }
    
    	/**
    	 * 修改按钮背景图片
    	 */
    	public void changeBtnBackground() {
    
    		class MyBtnOnTouch implements OnTouchListener {
    
    			int drawable[] = null;
    
    			@Override
    			public boolean onTouch(View v, MotionEvent event) {
    
    				if (v.getId() == R.id.searchbtn) {
    					drawable = new int[] { R.drawable.searchbtn,
    							R.drawable.searchbtn_pressed };
    
    				} else if (v.getId() == R.id.historybtn) {
    
    					drawable = new int[] { R.drawable.history_btn_normal,
    							R.drawable.history_btn_pressed };
    
    				}
    
    				switch (event.getAction()) {
    
    				case MotionEvent.ACTION_DOWN:
    
    					v.setBackgroundResource(drawable[1]);
    
    					break;
    				case MotionEvent.ACTION_UP:
    					v.setBackgroundResource(drawable[0]);
    					break;
    				}
    
    				return false;
    			}
    
    		}
    
    		searchBtn.setOnTouchListener(new MyBtnOnTouch());
    		historyBtn.setOnTouchListener(new MyBtnOnTouch());
    	}
    
    	private static final int WAITTING = 0;
    	private static final int FINISHED = 1;
    	private static final int ERROR = 2;
    	private ProgressDialog progressDialog;
    
    	private Handler mHandler = new Handler() {
    
    		@Override
    		public void handleMessage(Message msg) {
    
    			switch (msg.what) {
    
    			case WAITTING:
    				progressDialog.show();
    
    				break;
    			case ERROR:
    				if (progressDialog != null && progressDialog.isShowing()) {
    					progressDialog.dismiss();
    
    				}
    				break;
    			case FINISHED:
    				if (progressDialog != null && progressDialog.isShowing()) {
    					progressDialog.dismiss();
    
    				}
    
    				Common.closeKeyboardCommAct(MainActivity.this);// 关闭键盘
    				break;
    
    			case 10:
    				if (progressDialog != null && progressDialog.isShowing()) {
    					progressDialog.dismiss();
    
    				}
    				Toast.makeText(MainActivity.this, "未获取到相关信息,请验证查询条件!",
    						Toast.LENGTH_SHORT).show();
    				break;
    			}
    
    			super.handleMessage(msg);
    		}
    
    	};
    
    	/**
    	 * 用于存放结果的map key:timeList value: infoList
    	 * **/
    	private HashMap<List<String>, List<String>> resultMap = new HashMap<List<String>, List<String>>();
    
    	/**
    	 * 子线程联网获取数据
    	 * 
    	 * @author xiangxm
    	 * 
    	 */
    	class MyThread extends Thread {
    
    		private HashMap<String, String> threadMap = null;
    
    		public MyThread(HashMap<String, String> map) {
    
    			threadMap = new HashMap<String, String>();
    			this.threadMap = map;
    
    		}
    
    		@Override
    		public void run() {
    
    			int rand = (int) Math.random() * 1000 + 1000;
    			String strurl = "http://wap.kuaidi100.com/q.jsp?rand=" + rand
    					+ "&id=" + threadMap.get("companyId") + "&postid="
    					+ threadMap.get("order_num") + "&fromWeb=null";
    			Message msg = new Message();
    			msg.what = WAITTING;
    			mHandler.sendMessage(msg);// http://wap.kuaidi100.com/q.jsp?rand=1000&id=aae&postid=987654321&fromWeb=null
    			String result = getData(strurl);// http://m.kuaidi100.com/index_all.html?type=yuantong&postid=7409440775
    			if (result.equals("")) {
    
    				msg = new Message();
    				msg.what = 10;
    				mHandler.sendMessage(msg);
    
    				return;
    			}
    
    			org.jsoup.nodes.Document doc = Jsoup.parse(result);// 7409440775
    			Elements element = doc.body().getElementsByTag("p");
    			Object[] objArr = element.toArray();
    			Pattern p = Pattern.compile("<.+?>|\\>|\\·",
    					Pattern.DOTALL);
    
    			String tempStr = null;
    			ArrayList<String> timeList = new ArrayList<String>();// 存放快递的时间
    			ArrayList<String> infoList = new ArrayList<String>();// 存放快递的对应时间点的信息
    
    			for (int i = 3; i < objArr.length - 2; i++) {
    				Matcher m = p.matcher(objArr[i].toString());
    				tempStr = m.replaceAll("");
    				if (TextUtils.isEmpty(tempStr)) {
    
    					continue;
    				} else if (tempStr.startsWith("建议操作")) {
    
    					msg = new Message();
    					msg.what = 10;
    					mHandler.sendMessage(msg);
    
    					return;
    				}
    				// 2013-11-17 00:25:57 福建省泉州市石狮市公司 已收件 操作员:包叶明
    				timeList.add(new String(tempStr.substring(0, 19)));
    				infoList.add(new String(tempStr.substring(20)));
    			}
    
    			Log.e("----------时间---------最后结果", timeList.toString());
    			Log.e("----------物流的详细信息---------最后结果", infoList.toString());
    			msg = new Message();
    			msg.what = FINISHED;
    			mHandler.sendMessage(msg);
    
    			if (timeList.isEmpty() || infoList.isEmpty()) {
    
    				msg = new Message();
    				msg.what = 10;
    				mHandler.sendMessage(msg);
    
    				return;
    			}
    
    			Intent intent = new Intent();
    			intent.setClass(MainActivity.this, PackageDetailInfoActivity.class);
    			intent.putStringArrayListExtra("timeList", timeList);
    			intent.putStringArrayListExtra("infoList", infoList);
    
    			Bundle bundle = new Bundle();
    			bundle.putString("companyName", infoMap.get("companyName"));// 公司名称
    			bundle.putString("companyId", infoMap.get("companyId"));
    			bundle.putString("order_num", infoMap.get("order_num"));// 运单号
    			intent.putExtras(bundle);
    			startActivity(intent);
    			overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
    
    		}
    
    	}
    
    	/**
    	 * 
    	 * @param strurl
    	 * @return
    	 */
    	public String getData(String strurl) {
    		String output = "";
    		URL url;
    		try {
    			url = new URL(strurl);
    			InputStream is = url.openStream();
    
    			BufferedReader buffer = new BufferedReader(new InputStreamReader(
    					is, "UTF-8"));
    
    			String tem = "";
    			while ((tem = buffer.readLine()) != null) {
    				output += tem;
    			}
    			return output;
    
    		} catch (MalformedURLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return "";
    	}
    
    	// 点击空白处 软键盘消失
    
    	@Override
    	public boolean onTouchEvent(MotionEvent event) {
    		InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    		if (imm != null && imm.isActive()) {
    			return imm.hideSoftInputFromWindow(this.getCurrentFocus()
    					.getWindowToken(), 0);
    		}
    		return false;
    
    	}
    
    	long waitTime = 2000;
    	long touchTime = 0;
    
    	@Override
    	public void onBackPressed() {
    		long currentTime = System.currentTimeMillis();
    		if ((currentTime - touchTime) >= waitTime) {
    			Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
    			touchTime = currentTime;
    		} else {
    			finish();
    		}
    	}
    
    	private TextView title;
    	private TextView phonenumber;
    
    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    		// TODO Auto-generated method stub
    
    		if (resultCode == 8 && requestCode == 6) {
    
    			Bundle bundle = data.getExtras();
    			if (bundle == null) {
    
    				Toast.makeText(MainActivity.this, "获取数据失败!", Toast.LENGTH_SHORT)
    						.show();
    				return;
    			}
    			infoMap = new HashMap<String, String>();
    			String name = bundle.getString("companyName");
    			String str = bundle.getString("companyId");
    			String id = TextUtils.isEmpty(str) ? "" : str;
    			infoMap.put("companyName", name);
    			infoMap.put("companyId", id);
    
    			List<String> resultList = cls_companyinfo.getCompanyName(
    					Common.dbh, id);
    
    			if (resultList.get(0).equals("")) {
    
    				helpinfotext.setVisibility(View.GONE);
    				title.setVisibility(View.GONE);
    				title.setText("");
    			} else {
    				title.setText("温馨提示:");
    				helpinfotext.setText("查询须知:" + resultList.get(0));
    			}
    			if (resultList.get(1).equals("")) {
    				phonenumber.setVisibility(View.GONE);
    				title.setVisibility(View.GONE);
    				title.setText("");
    			} else {
    				title.setText("温馨提示:");
    				phonenumber.setText("查询电话:" + resultList.get(1));
    			}
    
    			companynameTxt.setText(TextUtils.isEmpty(name) ? "" : name);
    
    		}
    
    		super.onActivityResult(requestCode, resultCode, data);
    
    	}
    
    }
    




    展开全文
  • 通过快递100 api 获取物流信息

    千次阅读 2019-04-11 18:03:05
    package ... import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;...import org.apache.commons.lang3....

    package com.dongfang.common.utils.wuliu;


    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;



    import org.apache.commons.lang3.StringUtils;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpUriRequest;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
    import org.apache.http.protocol.BasicHttpContext;
    import org.apache.http.protocol.HttpContext;
    import org.apache.http.util.EntityUtils;


    import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSON;
    import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONArray;
    import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONObject;




    public class Kuaidi100 {

    private String get(String url) throws ClientProtocolException, IOException{
            DefaultHttpClient httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager());
            HttpGet httpGet = new HttpGet(url);
            HttpUriRequest request = null;
            request = httpGet;
            HttpContext localContext = new BasicHttpContext();
            HttpResponse response = httpClient.execute(request, localContext);
            return EntityUtils.toString(response.getEntity());
        }

    public List<Map<String, String>> queryLogisticsInfoByKuadi100(String trackingNo) {
            try {
                if(StringUtils.isBlank(trackingNo)){
                    return null;
                }
                // 1.通过快递单号获取是哪个快递公司。
                String typeResult = this.get("http://www.kuaidi100.com/autonumber/autoComNum?text="+trackingNo);
                JSONObject  typeJsonObject = (JSONObject)JSON.parse(typeResult);
                JSONArray typeDataArray = (JSONArray) typeJsonObject.get("auto");
                if(typeDataArray.isEmpty()){
                    return null;
                }
                JSONObject typeObject = (JSONObject)typeDataArray.get(0);
                String type = typeObject.getString("comCode");
                // 2.通过快递公司及快递单号获取物流信息。
                String kuaidiResult = this.get("http://www.kuaidi100.com/query?type="+type+"&postid="+trackingNo);
                JSONObject jsonObject = (JSONObject)JSON.parse(kuaidiResult);
                String status = jsonObject.getString("status");
                if(!"200".equals(status)){
                    return null;
                }
                List<Map<String, String>> list = new ArrayList<Map<String, String>>();
                JSONArray dataArray = (JSONArray) jsonObject.get("data");
                for (int i = 0; i < dataArray.size(); i++) {
                    Map<String, String> tempMap = new HashMap<String, String>();
                    JSONObject temp = (JSONObject) dataArray.get(i);
                    tempMap.put("date", (String) temp.get("time"));
                    tempMap.put("logisticsInfo", (String) temp.get("context"));
                    list.add(tempMap);
                }
                return list;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }

    }

     

     

    //以上代码已失效,最新破解版快递100     jdk1.8

    package com.dongfang.common.utils.wuliu;

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import me.kagura.JJsoup;
    import me.kagura.Session;

    import org.apache.commons.lang3.StringUtils;
    import org.apache.http.Consts;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpUriRequest;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
    import org.apache.http.protocol.BasicHttpContext;
    import org.apache.http.protocol.HttpContext;
    import org.apache.http.util.EntityUtils;
    import org.jsoup.Connection;

    import com.alibaba.fastjson.JSONPath;
    import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSON;
    import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONArray;
    import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONObject;


    public class Kuaidi100 {
        
        //创建新的Session对象,等价于requests.Session()
        public static Session session = JJsoup.newSession();
        
        public static void main(String[] angs){
            List<Map<String, Object>> dszf = queryLogisticsInfoByKuadi100("71580389924820");
            System.out.println(dszf.toString());
        }
        
        private static String get(String url) throws ClientProtocolException, IOException{
            // 动态模拟请求数据
            /*CloseableHttpClient httpclient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(url);
            // 模拟浏览器浏览(user-agent的值可以通过浏览器浏览,查看发出请求的头文件获取)
            httpGet.setHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36");
            CloseableHttpResponse response = httpclient.execute(httpGet);*/
            
            Connection.Response response = session.connect(url)
                    .method(Connection.Method.GET)
                    .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
                    .header("Upgrade-Insecure-Requests", "1")
                    .header("Connection", "keep-alive")
                    .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")
                    .header("Referer", "http://www.kuaidi100.com/?from=openv")
                    .header("Host", "www.kuaidi100.com")
                    .header("Accept-Encoding", "gzip, deflate")
                    .header("Accept-Language", "zh-CN,zh;q=0.9")
                    .execute();
            
            // 获取响应状态码
            int statusCode = response.statusCode();
            ///HttpEntity entity = response.getEntity();
            String html = "";
            // 如果状态响应码为200,则获取html实体内容或者json文件
            if(statusCode == 200){
                html = response.body();
            }
            
            return html;
        }
        
        public void getSession(){
             System.setProperty("java.awt.headless", "false");
             session.ignoreContentType(true);
        }
        
        
        public static List<Map<String, Object>> queryLogisticsInfoByKuadi100(String trackingNo) {
            try {
                
                 System.setProperty("java.awt.headless", "false");
                 session.ignoreContentType(true);
                if(StringUtils.isBlank(trackingNo)){
                    return null;
                }
                
             // 1.通过快递单号获取是哪个快递公司。
                String sdfhg = Kuaidi100.get("http://www.kuaidi100.com/?from=openv");
                
                
                // 1.通过快递单号获取是哪个快递公司。
                String typeResult = Kuaidi100.get("http://www.kuaidi100.com/autonumber/autoComNum?text="+trackingNo);
                JSONObject  typeJsonObject = (JSONObject)JSON.parse(typeResult);
                JSONArray typeDataArray = (JSONArray) typeJsonObject.get("auto");
                if(typeDataArray.isEmpty()){
                    return null;
                }
                JSONObject typeObject = (JSONObject)typeDataArray.get(0);
                String type = typeObject.getString("comCode");
                // 2.通过快递公司及快递单号获取物流信息。
                String kuaidiResult = Kuaidi100.get("http://www.kuaidi100.com/query?type="+type+"&postid="+trackingNo+"&temp=0."+System.currentTimeMillis()+"&phone=");
                JSONObject jsonObject = (JSONObject)JSON.parse(kuaidiResult);
                String status = jsonObject.getString("status");
                String nu = jsonObject.getString("nu");
                
                if(!"200".equals(status)){
                    return null;
                }
                
                //查询物流单号如果返回的物流单号不是查询的单号重新查询
                while(!trackingNo.equals(nu)){
                    // 2.通过快递公司及快递单号获取物流信息。
                    kuaidiResult = Kuaidi100.get("http://www.kuaidi100.com/query?type="+type+"&postid="+trackingNo);
                    jsonObject = (JSONObject)JSON.parse(kuaidiResult);
                    status = jsonObject.getString("status");
                    nu = jsonObject.getString("nu");
                    if(!"200".equals(status)){
                        return null;
                    }
                }
                
                
                List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
                JSONArray dataArray = (JSONArray) jsonObject.get("data");
                for (int i = 0; i < dataArray.size(); i++) {
                    Map<String, Object> tempMap = new HashMap<String, Object>();
                    JSONObject temp = (JSONObject) dataArray.get(i);
                    tempMap.put("date", (String) temp.get("time"));
                    tempMap.put("logisticsInfo", (String) temp.get("context"));
                    list.add(tempMap);
                }
                
                System.err.println("登录后的所有cookie:"+System.lineSeparator()+session.cookies());
                return list;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        
    }
     

    展开全文
  • 快递100注册了GitHub官方号(kuaidi100-api)及gitee官方号(kuaidi100API),由快递100官方提供sdk方便开发者调试及使用,欢迎各位开发者关注及使用。 由于平台刚刚建立,现在demo主要为Java/python/PHP语言上,更...

    100API对接的代码示例分享:

    快递100注册了GitHub官方号(kuaidi100-api)及gitee官方号(kuaidi100API),由快递100官方提供sdk方便开发者调试及使用,欢迎各位开发者关注及使用。

    由于平台刚刚建立,现在demo主要为Java/python/PHP语言上,更多语言支持正在补充中,可以在快递100在GitHub和gitee官方号上找到。

    demo集成了实时查询、订阅推送、智能判断、云打印、电子面单、短信等接口。随着快递100的API产品越来越丰富,除了自有的API接口外,第三方合作API可以直接在【快递100云平台】 找到。感觉快递100与开发者的关系越来越近,期待!

    展开全文
  • 快递100API

    2019-04-10 10:08:19
    拼接参数: ...快递码,请参考快递100码 String postid 快递单号 String id 未知,可为空 String valicode 未知,可为空 String temp 未知,可为空 String url 示例:https://www.kua...
  • 快递100api讲解

    2018-08-29 17:50:14
    * 快递100Api * @param name 快递公司编码 * @param no 快递单号 * @returns {Promise&lt;any&gt;} * { * "message": "ok", * "nu": "3373360521434", //...
  • http://www.kuaidi100.com/openapi/api_post.shtml 1、应用场景 (1)电商网站用户打开“我的订单”时调用此API显示结果...是,请到 快递查询API申请地址 申请 3、请求地址(注意这里错误丶) http://api.ku
  • 各种快递查询--Api接口

    万次阅读 热门讨论 2019-03-05 10:55:13
    强烈推荐 分享一个大神的人工智能教程。零基础!通俗易懂!...这篇博客从发布到现在已经很久了,根据我对这篇博客的统计及数据观察,对快递查询接口的使用的人还是比较多的,所以我准备把博客重新梳...
  • 快递查询API接口

    千次阅读 2012-04-04 16:00:20
    关于爱查快递API 爱查快递API简介 快递查询API是爱查快递推出的一款免费的快递(物流)单号查询的应用接口,可应用于B2C商城、电脑软件、手机应用等领域,目前支持国内外常见的70余家快递公司。 爱查快递...
  • 最全快递API接口及应用详解

    万次阅读 2019-07-05 10:03:50
    因为需要对接物流/快递公司接口,...入选的物流API服务商有快递鸟、Trackingmore、快递100等。 每个服务商官网都有详细的接入文档,这里不再一一叙述,仅举一个例子。 以快递鸟为例,注册后,就可以获取API,有专人
  • SoapUI 测试REST API(接口测试)

    万次阅读 2016-09-10 16:31:13
    REST介绍: ...http://www.ruanyifeng.com/blog/2014/05/restful_api.htmlSoapUI官网例子: REST API Sample Project in SoapUI接口测试DEMO 网站《快递100》查看快递状态:http://www.kuaidi100.com/auto
  • 快递接口---分析对比

    万次阅读 2016-12-15 10:27:40
    快递接口—分析对比·标签(空格分隔): 接口 快递接口 快递 快递Api快递快递接口?快递查询?快递下单接口?你需要快递什么接口?是找不到?使用的是次数限制,还是收费的呢?是否有技术支持?是否能给予我们 全...
  • 快递100接口使用

    万次阅读 2019-01-06 18:30:09
    快递100为我们提供了查询各大快递公司快递详情的接口,当然,这只是快递接口的一个,还有很多像这样的快递的接口,具体代码实现就不贴出来了,直接去下面下载源码就好: 下载地址:快递100源码及资料   接下来...
  • 整理搜集免费的API接口网址

    千次阅读 2018-06-14 20:35:16
    amp;q=商品关键字&amp;callback=cb 用例 ps:callback是回调函数设定物流接口快递接口:http://www.kuaidi100.com/query?type=...postid=快递单号 测试用例 ps:快递公司编码:申通="shentong" ...
  • 已在其他板块里和MYCNCART官网插件区提供了下载插件,此贴只是针对快递100的接口进行分析处理 ---------------------------------------------------------------------------------------------------------------...
  • 我知道的几个免费的API数据接口

    千次阅读 2017-03-28 15:53:40
    1、APiX http://www.apix.cn/ 2、聚合数据 https://www.juhe.cn/ 3、数据堂 http://www.datatang.com/ 4、E生活 ...5、快递100 https://www.kuaidi100.com/openapi/ 6、百度apistore http://
  • 以下所有 API 均由产品公司自身提供,本人皆从网络获取。获取与共享之行为或有侵犯产品权益的嫌疑。若被告知需停止共享与使用,本人会及时删除此页面与整个项目。请您暸解相关情况,并遵守产品协议。 #再三声明,仅...
  • 各种快递查询Api接口(快递鸟)

    万次阅读 2016-07-09 15:55:57
    前提 应用场景 可实现需求 申请Key 快递查询Api接口 接口文档及各开发语言Demo 查询Api接口定义系统级输入参数 应用级输入参数 返回结果参数 请求JSON参数 响应JSON参数 查询Api接口使用 ...快递100
  • 查询说明 接口一:快递单号智能识别 快递单号智能识别,是根据查询的快递单号自动...快递公司+快递单号,是根据查询的快递公司和快递单号,获取快递公司及实时的运单状态和运单状态等信息。 接口描述 功能描...
  • 快递100接口对接总结

    千次阅读 2018-01-18 11:35:58
    (2)支持主动推送、智能快递归属分析、实时查询;(3)支持快递公司更多;(4)提供在线调试工具、代码demo、管理后台;(5)顺丰、圆通、中通、韵达、EMS、申通接入过程:1、申请免费版:填写资料,申请key(是一...
1 2 3 4 5 ... 20
收藏数 3,281
精华内容 1,312
关键字:

快递100api