博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android网络编程:http 和权限
阅读量:4098 次
发布时间:2019-05-25

本文共 7776 字,大约阅读时间需要 25 分钟。

笔记自用 来源:阳光沙滩 拉大锯

关于http响应码

在这里插入图片描述

http请求格式

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

android权限配置

网络权限:

关于Android 版本,网络请求的问题: 权限配置了,还是无法发起请求。这个其实可以去看log,log会告诉你为什么不给你请求。

也有同学说在版本27的时候可以,到了29上就不可以了。 遇到这些问题怎么办呢?可以去看官方文档
android28以前的版本,比如说27可以使用明文(http)访问,27以后需要网络安全配置,28(包括28)以上,则需要配置 否则就会报下面的错:

在这里插入图片描述

1.配置这个可以解决:
在这里插入图片描述
2.配置networkSecurityConfig:,使用网络安全配置文件:
允许这些域名明文访问,否则http会报错

sunofbeaches.com
www.sunofbeach.net
imgs.sunofbeaches.com

在这里插入图片描述

简单读取:

public void loadJson(View view){
new Thread(new Runnable() {
@Override public void run() {
try {
URL url = new URL("http://10.0.2.2:9102/get/text"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(10000); //连接时间 connection.setRequestMethod("GET");//请求方法 //设置请求头里面的一些属性 connection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.9"); connection.setRequestProperty("Accept","*/*"); connection.connect(); //结果码 int responseCode = connection.getResponseCode(); if(responseCode==200){
//拿头部信息 Map
> headerFields = connection.getHeaderFields(); //alt +enter 自动补全 Set
>> entries = headerFields.entrySet(); for(Map.Entry
> entry:entries){
Log.d(TAG,entry.getKey()+"=="+entry.getValue()); } InputStream inputStream = connection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line = bufferedReader.readLine(); Log.d(TAG,"line-->"+line); } } catch (Exception e) {
e.printStackTrace(); } } }).start(); }

在这里插入图片描述

展示数据 利用Gson 和Glide加载图片 小测试:

//适配器package com.example.mytext.adapters;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import androidx.annotation.NonNull;import androidx.recyclerview.widget.RecyclerView;import com.bumptech.glide.Glide;import com.example.mytext.R;import com.example.mytext.domain.GetTextItem;import java.util.ArrayList;import java.util.List;public class GetResultListAdpters  extends RecyclerView.Adapter
{
//防止为null private List
mdata = new ArrayList<>(); @NonNull @Override public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_get_text,null); InnerHolder innerHolder = new InnerHolder(view); return innerHolder; } @Override public void onBindViewHolder(@NonNull InnerHolder holder, int position) {
View itemView = holder.itemView; TextView title = itemView.findViewById(R.id.item_title); ImageView iv = itemView.findViewById(R.id.iv_item); GetTextItem.DataBean dataBean = mdata.get(position); title.setText(dataBean.getTitle()); Glide.with(itemView.getContext()).load("http://10.0.2.2:9102"+mdata.get(position).getCover()).into(iv); } @Override public int getItemCount() {
return mdata.size(); } public void setData(GetTextItem getTextItem) {
mdata.clear(); mdata.addAll(getTextItem.getData()); notifyDataSetChanged(); } public class InnerHolder extends RecyclerView.ViewHolder {
public InnerHolder(@NonNull View itemView) {
super(itemView); } }}
package com.example.mytext;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.LinearLayoutManager;import androidx.recyclerview.widget.RecyclerView;import android.graphics.Canvas;import android.graphics.Rect;import android.os.Bundle;import android.util.Log;import android.view.View;import com.example.mytext.adapters.GetResultListAdpters;import com.example.mytext.domain.GetTextItem;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.List;import java.util.Map;import java.util.Set;public class TextActivity extends AppCompatActivity {
private static final String TAG ="TextActivity" ; private GetResultListAdpters adpters; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_text); initView(); } private void initView(){
RecyclerView recyclerView = findViewById(R.id.result_list); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
outRect.top =5; outRect.bottom =5; } }); adpters =new GetResultListAdpters(); recyclerView.setAdapter(adpters); } public void loadJson(View view){
new Thread(new Runnable() {
@Override public void run() {
try {
URL url = new URL("http://10.0.2.2:9102/get/text"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(10000); //连接时间 connection.setRequestMethod("GET");//请求方法 //设置请求头里面的一些属性 connection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.9"); connection.setRequestProperty("Accept","*/*"); connection.connect(); //结果码 int responseCode = connection.getResponseCode(); if(responseCode==200){
//拿头部信息 Map
> headerFields = connection.getHeaderFields(); //alt +enter 自动补全 Set
>> entries = headerFields.entrySet(); for(Map.Entry
> entry:entries){
Log.d(TAG,entry.getKey()+"=="+entry.getValue()); } InputStream inputStream = connection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line = bufferedReader.readLine(); //Log.d(TAG,"line-->"+line); Gson gson = new Gson(); GetTextItem getTextItem = gson.fromJson(line,GetTextItem.class); updateUI(getTextItem); } } catch (Exception e) {
e.printStackTrace(); } } }).start(); } private void updateUI(GetTextItem getTextItem) {
runOnUiThread(new Runnable() {
@Override public void run() {
adpters.setData(getTextItem); } }); }}

转载地址:http://zhrii.baihongyu.com/

你可能感兴趣的文章
c++输出文件流ofstream用法详解
查看>>
字符编码:ASCII,Unicode 和 UTF-8
查看>>
QT跨MinGW和MSVC两种编译器的解决办法
查看>>
firewalld的基本使用
查看>>
Linux下SVN客户端使用教程
查看>>
i2c-tools
查看>>
Linux分区方案
查看>>
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>