您的位置:首页 > 理论基础 > 计算机网络

http://user.ip138.com/ip/code/

2016-08-31 16:58 176 查看
Java(android)接口调用示例:

package com.lmqkk.test;

import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

QueryTask task = new QueryTask();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,"8.8.8.8","txt","find","859476648b3de65d76804ff906dd1a1c6a");
} else {
task.execute("8.8.8.8","txt","find","859476648b3de65d76804ff906dd1a1c6a");
}
}

class QueryTask extends AsyncTask<String,Void,String>
{
@Override
protected String doInBackground(String... strings) {
String strUrl = "http://api.ip138.com/query/" ;

Map<String,String> params = new HashMap<String,String>();
params.put("ip",strings[0]);       //可为空
params.put("datatype",strings[1]);
params.put("callback",strings[2]); //可为空
String result = null;

try {
URL url = new URL(strUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

//头信息
HashMap<String, String> header = new HashMap<String,String>();
header.put("token", strings[3]);
for (String headerName : header.keySet()) {
connection.addRequestProperty(headerName, header.get(headerName));
}

//设置超时时间
connection.setConnectTimeout(5*1000);
//设置允许输入
connection.setDoInput(true);
//设置读取超时:
connection.setReadTimeout(5*1000);
connection.setRequestMethod("GET");
//参数
byte[] body = encodeParameters(params,"UTF-8");
if (body != null)
{
connection.setDoOutput(true);
connection.addRequestProperty("Content-Type","application/x-www-form-urlencoded; charset=" + "UTF-8");
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.write(body);
out.close();
}
int responseCode = connection.getResponseCode();
if (responseCode == -1) {
throw new IOException("Could not retrieve response code from HttpUrlConnection.");
}
if (responseCode != 200)
{
return responseCode + "";
}

InputStream inputStream = null;
try {
inputStream = connection.getInputStream();
} catch (IOException ioe) {
inputStream = connection.getErrorStream();
}

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int len = 0;
if (inputStream != null) {
try {
while ((len = inputStream.read(data)) != -1) {
outputStream.write(data, 0, len);
}
result = new String(outputStream.toByteArray(), "UTF-8");
}
catch (IOException e) {
e.printStackTrace();
}
}

return result;
}catch(SocketTimeoutException e)
{

}catch (MalformedURLException e) {

} catch (IOException e) {

}
return null;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("Query", "onPostExecute: "+s);
}

byte[] encodeParameters(Map<String, String> params, String paramsEncoding) {
if (params == null || params.size() == 0) return null;

StringBuilder encodedParams = new StringBuilder();
try {
for (Map.Entry<String, String> entry : params.entrySet()) {
encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding));
encodedParams.append('=');
encodedParams.append(URLEncoder.encode(entry.getValue(), paramsEncoding));
encodedParams.append('&');
}
return encodedParams.toString().getBytes(paramsEncoding);
} catch (UnsupportedEncodingException uee) {
throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java class