`
l540151663
  • 浏览: 185358 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

使用快递100api 快递查询

阅读更多
现在一些物流公司支持移动设备查询,这里我简单写了个项目。
我的快递api是快递100提供的,由于支持问题,使用的是htmlapi,访问url如下:
public static final String  EXPRESS_API_URL="http://www.kuaidi100.com/applyurl?key=d3d26f3c59bd5a9b&com=com_id&nu=nu_id";

写了个工具类Util.java,具体方法如下:
package com.lml.mykuaidi;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


public class Util {
public String setUrl(String comId, String nuId){
return Constant.EXPRESS_API_URL.replace("com_id", comId).replace("nu_id", nuId);
}

public String getData(String comId, String nuId) {
String content = ""  ;
try {
String strUrl=setUrl(comId, nuId);
URL url = new URL(strUrl);
URLConnection con = url.openConnection();
con.setAllowUserInteraction(false);
InputStream urlStream = url.openStream();
String type = URLConnection.guessContentTypeFromStream(urlStream);
String charSet = null;
if (type == null)
type = con.getContentType();

byte b[] = new byte[10000];
int numRead = urlStream.read(b);
content = new String(b, 0, numRead);
while (numRead != -1) {
numRead = urlStream.read(b);
if (numRead != -1) {
String newContent = new String(b, 0, numRead, charSet);
content += newContent;
}
}
urlStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return content;
}

}

在主函数MainActivity.java中,使用异步加载数据:
package com.lml.mykuaidi;


import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends Activity {

RadioButton rbSpinner, rbEditText;
Spinner spCompany;
EditText etCompany, etNum;
Button btnQuery;

int rbFlag = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

findview();
setAdapter();
setListener();
}

private void findview() {
rbSpinner = (RadioButton) findViewById(R.id.rbSpinner);
rbEditText = (RadioButton) findViewById(R.id.rbEditText);
spCompany = (Spinner) findViewById(R.id.spCompany);
etCompany = (EditText) findViewById(R.id.etCompany);
etNum = (EditText) findViewById(R.id.etNum);
btnQuery = (Button) findViewById(R.id.btnQuery);
}

private void setAdapter() {
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.ems_company,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCompany.setAdapter(adapter);
}

private void setListener() {
rbSpinner.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
rbFlag = 1;
rbEditText.setChecked(false);
etCompany.setEnabled(false);
spCompany.setEnabled(true);
}
}
});

rbEditText.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
rbFlag = 2;
rbSpinner.setChecked(false);
etCompany.setEnabled(true);
spCompany.setEnabled(false);
}
}
});

btnQuery.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
String num = etNum.getText().toString().trim();
String code;
if (rbFlag == 1) {
String[] codes = getResources().getStringArray(R.array.ems_code);
code = codes[spCompany.getSelectedItemPosition()];
} else {
code = etCompany.getText().toString().trim();
if (code.equals("")) {
Toast.makeText(MainActivity.this, "快递公司不能为空", Toast.LENGTH_SHORT)
.show();
}
}

AsyTask task = new AsyTask(MainActivity.this);
task.execute(code, num);
}
});
}

class AsyTask extends AsyncTask<String, Integer, String> {

int i;
Context mContext;
ProgressDialog mDialog = null;

public AsyTask(Context context) {
mContext = context;
}

@Override
protected void onPreExecute() {
super.onPreExecute();
i = 1;

mDialog = new ProgressDialog(mContext);
mDialog.setMessage("Please wait...");
mDialog.setCancelable(false);
mDialog.show();

}

@Override
protected String doInBackground(String... arg0) {
Util util = new Util();
String res = util.getData(arg0[0], arg0[1]);
return res;
}

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null && !result.equals("")) {
Intent intent = new Intent(mContext, DataShowActivity.class);
Bundle bundle = new Bundle();
bundle.putString("data", result);
intent.putExtras(bundle);
startActivity(intent);
} else {
Toast.makeText(mContext, "连接错误!", Toast.LENGTH_SHORT).show();
}

mDialog.dismiss();
}
}
}

现实结果界面DataShowActivity.java如下:
package com.lml.mykuaidi;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.TextView;

public class DataShowActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.kuaidi_info);

String url= getIntent().getStringExtra("data");
WebView wvData=(WebView)findViewById(R.id.wvData);
wvData.getSettings().setDefaultTextEncodingName("utf-8") ;
wvData.getSettings().setJavaScriptEnabled(true);
String content ="<html><body><iframe name=\"kuaidi100\" src=\""+url+"\" width=\"600\" height=\"380\" "
+ "marginwidth=\"0\" marginheight=\"0\" hspace=\"0\" vspace=\"0\" frameborder=\"0\" scrolling=\"no\"></iframe></body></html>";
wvData.loadDataWithBaseURL(null,content, "text/html", "UTF-8",null) ;

}
}

这是一个简单的demo,具体源码见附件。
分享到:
评论

相关推荐

    快递100API文档

    快递100API:APICode URL支持的快递公司及参数说明;利用APICode URL创建快递查询程序的整体步骤,APICode URL使用说明;API URL使用说明,效果演示、开发示范和插件支持

    基于PHP快递100接口的快递查询系统设计源码

    本项目是一款基于快递100接口的快递查询系统设计源码,包含41个文件,主要由40个PHP文件...系统利用快递100的免费API接口,实现了实时快递查询、快递信息推送、云打印、电子面单等功能,适用于商家寄件和C端寄件场景。

    快递鸟API快递查询接口ASP版本

    本文将深入探讨“快递鸟API快递查询接口ASP版本”,这是针对ASP(Active Server Pages)开发的一种实现,使得开发者能够轻松地在ASP环境中集成快递查询功能。 快递鸟是一家专注于物流信息化服务的公司,提供了丰富...

    快递鸟api,查询物流,nodejs实现

    快递鸟api,查询物流,nodejs实现

    快递查询接口api

    在快递查询场景中,API通常是提供给开发者使用的接口,使得他们能够调用特定的函数或方法来查询快递的状态,如包裹的当前位置、是否已签收等。 快递查询接口API通常会支持多种快递公司,包括但不限于顺丰、圆通、...

    快递查询API_asp文件

    使用快递查询API可以带来以下优势: 1. 提升用户体验:用户无需离开购物平台就能查看快递状态,减少了用户的操作步骤,提高了满意度。 2. 数据同步:API可以实时更新快递信息,避免了手动输入或定期刷新的麻烦。 3. ...

    关于小程序调用快递100免费api查询物流

    快递100是一家提供快递查询服务的平台,它提供了丰富的API接口供开发者使用。在小程序中,我们可以利用这些API接口,通过HTTP请求获取物流信息。首先,你需要在快递100官网注册开发者账号并申请API密钥,这个密钥会...

    物流API 快递单号查询

    本文将深入探讨物流API的概念、工作原理以及如何使用相关文件进行快递单号查询。 首先,我们需要理解什么是物流API。API(Application Programming Interface)是软件系统之间进行交互的一种协议,它定义了不同应用...

    快递查询API

    在本文中,我们将深入探讨快递查询API的工作原理、常见功能、使用场景以及如何进行集成。 首先,让我们理解什么是API。API,全称为Application Programming Interface,是一组规定和协议,用于软件之间交互。在快递...

    快递查询接口api (asp)

    在IT行业中,快递查询接口API是一种非常实用的服务,它允许开发者通过编程的方式获取快递物流信息。在这个特定的案例中,我们关注的是一个基于ASP(Active Server Pages)的免费快递查询接口。ASP是一种由微软开发的...

    快递查询API函数文件

    在使用"快递查询接口API"时,开发者首先需要了解API的文档,其中包括了接口的URL、请求方法(通常是GET或POST)、需要传递的参数(比如运单号)、以及返回的数据格式(可能是JSON或XML)。开发者需要在自己的应用...

    国内快递接口API

    在本案例中,提供的API是针对ASP和PHP两个编程语言版本的,这意味着开发者可以使用这两种语言来调用接口,实现快递信息的查询。 API(Application Programming Interface)是一组预定义的规则和协议,用于构建软件...

    APISpace 全国快递查询 API接口 PHP调用示例代码

    全国快递查询 API 支持多家主流快递公司的物流追踪,如圆通、高铁速递、中通快递、申通快递、百世快递(原汇通)、韵达快递和顺丰速运。 要使用这个 API,首先需要在 APISpace 的官方网站上订阅服务。订阅链接为:...

    java-demo:快递100,接口,API,快递100免费接口,快递查询接口,快递查询接口,快递100 api,快递100 api接口,快递100接口,快递查询api,快递查询api 免费,快递api,快递接口,接口,API,查询,快递查询,快递信息推送,实时快递查询,云打印,电子面单,商家寄件,C端寄件,个人寄件,物流查询,物流轨迹,地图轨迹,地图api

    Features提供了快递100接口请求参数实体类、返回实体类。提供测试类调试。支持maven、gradle引入Getting startedjava-demo使用和测试可参考。# git clone https://github.com/kuaidi100-api/java-demo.gitAdd Config...

    php调用快递100api示-json返回值

    在本文中,我们将深入探讨如何使用PHP调用快递100API来获取并处理JSON返回值,以便在前端展示实时的物流状态。首先,我们需要理解快递100API的工作原理和参数设置。 快递100API是一个接口服务,允许开发者通过发送...

    快递100查询接口

    用asp来实现的kuaidi100.com的快递查询接口,可以查询他们支持的快递公司的信息,包括带验证码的,网上找了好久都没找了,自己搞个啦,代码不好,献丑了! ● APICode URL 返回验证码的图片,支持所有快递公司,返回...

    快递100查询插件PHP通用版.rar

    快递100是一个知名的在线快递查询服务,提供了丰富的API接口供开发者使用。这个插件利用了这些接口,允许用户通过输入快递单号来查询包裹的实时状态。快递100的API通常会返回包裹的最新位置、派送状态、预计到达时间...

    各种快递查询--Api接口

    开发者可以使用类似的方法,在不同语言环境中调用这个API,并根据返回的数据生成动态的物流跟踪界面,为用户提供实时的快递状态查询服务。需要注意的是,确保在处理JSON数据时使用正确的编码(如UTF8),以避免解码...

    附件一:快递100企业版快递查询接口(API)技术文档2020.03.11.doc

    快递100企业版快递查询接口(API)技术文档2020.03.11详细介绍了如何集成和使用该第三方物流查询服务。这个API主要用于电子商务和其他需要实时跟踪包裹状态的应用场景,允许开发者通过调用接口获取快递信息,提高...

Global site tag (gtag.js) - Google Analytics