【Android】HTTP请求

【Http请求】

1.get请求(简单直接,速度快)

请求地址:
https://siemens-home.tmall.com/shop/view_shop.htm ? (问号后表示开始加入Get请求的参数)

请求的7个参数(以&符号分割):
spm=a21bo.2017.201863-1.d1.5af911d9PXsRPq &
user_number_id=859230932 &
pvid=3aa663fc-dd84-4782-81ab-c8fdd6416edb &
pos=1 &
brandId=80946 &
acm=03014.1003.1.765824 &
scm=1007.13143.56636.100200300000000

2.post请求(安全性好,长度无限制)

【网络权限】

网络请求需要在清单文件中增加权限

<uses-permission android:name="android.permission.INTERNET"/>

实现

使用聚合数据作为数据源,将收到的数据打印到Log中

package com.example.myapplication;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

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

        new Thread() {

            public void run() {
                //准备一个要访问的链接地址
                String site = "http://v.juhe.cn/toutiao/index?key=*******************************";
                try {
                    //转换字符串为URL对象
                    URL url = new URL(site);
                    //获得网络请求对象
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    //设置请求模式为GET
                    conn.setRequestMethod("GET");
                    //获得网络请求状态码
                    int httpCode = conn.getResponseCode();
                    //如果正常
                    if(httpCode == 200) {
                        //获得字节输入流
                        InputStream is = conn.getInputStream();
                        //字节流转字符流
                        InputStreamReader isr = new InputStreamReader(is);
                        //套一层缓冲流提高效率(字符输入缓冲流)
                        BufferedReader br = new BufferedReader(isr);

                        //用于拼接服务器返回的字符数据的字符串对象
                        String data = new String();

                        //每次循环读取的buffer
                        String buf;

                        //循环读取
                        while((buf = br.readLine()) != null) {
                            //拼接结果
                            data += buf;
                        }

                        //关闭流
                        br.close();

                        //输出接收到的服务器的数据
                        Log.d("MainActivity", data);
                    }else {
                        Log.d("MainActivity", "http请求失败,状态码:"+httpCode);
                    }

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }.start();


    }

}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值