一、httpUrlConnection + get 加载网络图片
由于xml界面过于简单,因此直接省略,下面是具体的java代码。
public class MainActivity extends AppCompatActivity {
private static final int IMG_GET = 1001 ;
private ImageView imageView;
private Button button;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
imageView = findViewById(R.id.imageView);
button = findViewById(R.id.button);
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
if (message.what == IMG_GET){
Bitmap bitmap = (Bitmap) message.obj;
imageView.setImageBitmap(bitmap); //主线程修改UI
return true; //返回true,不需要其他人再处理
}
return false;
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() { //子线程访问网络,加载图片
@Override
public void run() {
setHttpUrlConnectionGet();
}
}).start();
}
});
}
private void setHttpUrlConnectionGet() {
String imgurl = "http://pic33.nipic.com/20131007/13639685_123501617185_2.jpg";
try {
URL url = new URL(imgurl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
int code = httpURLConnection.getResponseCode();
Log.e("urlConnection","code = " + code); //code=200,表示连接成功
InputStream inputStream = httpURLConnection.getInputStream(); //get
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Message message = Message.obtain();
message.what = IMG_GET;
message.obj = bitmap;
handler.sendMessage(message); //发送携带message.what和message.obj的消息
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer stringBuffer = new StringBuffer();
String line = bufferedReader.readLine();
while (line != null){
stringBuffer.append(line); //将每次读到的line接到stringBuffer后面
line = bufferedReader.readLine();
}
Log.e("urlConnection","stringBuffer = " + stringBuffer.toString());
}catch (IOException e){
e.printStackTrace();
}
}
}
二、httpUrlConnection + get 查询手机号码归属地
由于xml界面过于简单,因此直接省略,下面是具体的java代码。
public class MainActivity extends AppCompatActivity {
private static final int GET_PHONE = 1001 ;
private Button button;
private Handler handler;
private EditText editText;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
button = findViewById(R.id.button);
editText = findViewById(R.id.edit_Text);
textView = findViewById(R.id.text_Phone);
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
if (message.what == GET_PHONE){
String json = message.obj.toString();
try {
JSONObject jsonObject = new JSONObject(json); //初始化JSONObject对象
JSONObject result = jsonObject.optJSONObject("result");
String resultPhone = result.optString("province")
+result.optString("city")
+result.optString("company");
textView.setText(resultPhone);
} catch (JSONException e) {
e.printStackTrace();
}
return true;
}
return false;
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
String phone = editText.getText().toString();
setHttpUrlConnectionGet(phone);
}
}).start();
}
});
}
private void setHttpUrlConnectionGet(String phone) {
String baseUrl = "http://apis.juhe.cn/mobile/get";
String phoneUrl = baseUrl.concat("?phone=").concat(phone).concat("&key=")
.concat("9f392fc948a5703e7ae4779b0ee94dd1");
try {
URL url = new URL(phoneUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setConnectTimeout(10000);
int code = httpURLConnection.getResponseCode();
Log.e("urlConnection","code = " + code);
if (code != 200){
return;
}
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer stringBuffer = new StringBuffer();
String line = bufferedReader.readLine();
while (line != null){
stringBuffer.append(line);
line = bufferedReader.readLine();
}
Log.e("urlConnection","stringBuffer = " + stringBuffer);
Message message = Message.obtain();
message.what = GET_PHONE;
message.obj = stringBuffer.toString();
handler.sendMessage(message);
}catch (IOException e){
e.printStackTrace();
}
}
}
三、总结 httpUrlConnection + get 拿到 json 字符串的工具类
public class RequestServer {
private static String TAG = "RequestServer";
public static String RequestServer(String urlString) {
BufferedReader br = null;
HttpURLConnection conn = null;
stringBuffer sb = new stringBuffer();
try {
URL reqURL = new URL(urlString);
conn = (HttpURLConnection) reqURL.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(10000);
//打开网络通讯输入流
int code = conn.getResponseCode();
Log.e(TAG,"code ="+code);
if (code != 200){
return null;
}
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8"); //通过InputStream is 创建InputStreamReader对象
br = new BufferedReader(isr); //通过InputStreamReader isr 创建BufferReader对象
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//return "{"msg":"绑定成功","return":true}
return sb.toString();
}
}
四、httpUrlConnection + post 查询手机号码归属地
由于xml界面过于简单,因此直接省略,下面是具体的java代码。其实post方法和get方法差不多,只是向服务器传递接口所需参数的方式有所区别,get方法比post方法简单方便,post需要将参数插入输出流中传往服务器,较繁琐。
public class MainActivity extends AppCompatActivity {
private static final int GET_PHONE = 1001 ;
private Button button;
private Handler handler;
private EditText editText;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
button = findViewById(R.id.button);
editText = findViewById(R.id.edit_Text);
textView = findViewById(R.id.text_Phone);
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
if (message.what == GET_PHONE){
String json = message.obj.toString();
try {
JSONObject jsonObject = new JSONObject(json);
JSONObject result = jsonObject.optJSONObject("result");
String resultPhone = result.optString("province")
+result.optString("city")
+result.optString("company");
textView.setText(resultPhone);
} catch (JSONException e) {
e.printStackTrace();
}
return true;
}
return false;
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
String phone = editText.getText().toString();
setHttpUrlConnectionPost(phone);
}
}).start();
}
});
}
private void setHttpUrlConnectionPost(String phone) {
String baseUrl = "http://apis.juhe.cn/mobile/get";
try {
URL url = new URL(baseUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setConnectTimeout(10000);
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
/** 向服务器写入接口需要的phone、key两个参数 */
String body = "phone=".concat(phone).concat("&key=").concat("9f392fc948a5703e7ae4779b0ee94dd1");
OutputStream os = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os,"utf-8"));
bufferedWriter.write(body);
bufferedWriter.flush();
bufferedWriter.close();
int code = httpURLConnection.getResponseCode();
Log.e("urlConnection","code = " + code);
if (code != 200){
return;
}
InputStream is = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is,"utf-8"));
StringBuffer stringBuffer = new StringBuffer();
String line = bufferedReader.readLine();
while (line != null){
stringBuffer.append(line);
line = bufferedReader.readLine();
}
Log.e("urlConnection","stringBuffer = " + stringBuffer);
Message message = Message.obtain();
message.what = GET_PHONE;
message.obj = stringBuffer.toString();
handler.sendMessage(message);
}catch (IOException e){
e.printStackTrace();
}
}
}