Android get/ post 方法 传递网络数据 -简单的翻译功能实现(GET)
来源:互联网 发布:手机显示yy网络不给力 编辑:程序博客网 时间:2024/05/01 09:11
Android get/ post 方法 传递网络数据 -简单的翻译功能实现(GET)
学习android不久,最近学习了android的Get 和Post方法传递数据,相对与罗列书上的知识不如来动手写个小demo乐趣更多,来和我一起动手来实现简单的翻译功能的小demo吧!超简单!:
- 注册有道翻译API(百度翻译、金山词霸等都可)
- 创建android项目
- 创建布局界面
- 创建get/post请求
- 获取返回的数据
- 显示获取到的数据
GET方法小解:
1.Get方式在通过URL提交数据,数据在URL中可以看到。
2.GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
3.使用 Get 的时候,参数会显示在地址栏上,如果这些数据是中文数据而且是非敏感数据的使用 get。
我们在百度搜索CSDN 时可以看到地址栏 www.baidu.com/s?wd=CSDN
即是向www.baidu.com/s使用get方法传入wd的为CSDN,来请求搜索”CSDN”
下面来学习如何在安卓中使用Get请求
编写activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入要翻译的内容" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="翻译" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
布局 很简单 edittext 来获取输入的文本 button 来触发网络请求 textview来显示返回的内容。
本编辑器支持 Markdown Extra , 扩展了很多好用的功能。具体请参考[Github][2].
编辑MainActivity.java
MainActivity.java:
package com.qqnum.getdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;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;public class MainActivity extends AppCompatActivity { EditText editText; Button button; TextView textView; String ApiUrl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.edit); button = (Button) findViewById(R.id.button); textView = (TextView) findViewById(R.id.text); //有道翻译的api ApiUrl = "http://fanyi.youdao.com/openapi.do?keyfrom=MyFristBlog&key=1985316716&type=data&doctype=json&version=1.1&q="; button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //开启线程来发起网络请求 new Thread(new Runnable() { @Override public void run() { try { //创建get 请求 URL url = new URL(ApiUrl + editText.getText().toString()); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); //接收返回的内容 InputStream inputStream = connection.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String textline; //用来记录每一行内容 StringBuilder gettext = new StringBuilder();//储存每一行内容 while ((textline = bufferedReader.readLine()) != null) { gettext.append(textline); } //关闭读写 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); setText(gettext);//设置文本的方法 } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } }); } //设置文本的方法 public void setText(final StringBuilder text) { new Thread(new Runnable() { @Override public void run() { //一定要在UI线程(主线程)中更新界面 runOnUiThread(new Runnable() { @Override public void run() { textView.setText(text); } }); } }).start(); }}
发送请求
首先在监听事件中开启一个线程,创建URL对象,这里设置为我们在有道翻译申请的 api地址。然后使用HttpURLConnection 发送http请求,请求的目标就是传入的有道翻译api地址,setRequestMethod("GET")
方法来设置请求方式(不设置是默认为 Get方式)。
接收返回的数据
使用InputStreamReader 来对返回的数据进行读取,然后用while ((textline = bufferedReader.readLine()) != null) { gettext.append(textline); }
来将每一行添加到gettext中并传给setText()方法来更新textview中的内容。
将返回的数据显示到textview
创建一个线程,一定要在UI线程(主线程)中更新界面,用setText()方法设置显示的文本。
最后别忘了加入网络权限,在AndroidManifest.xml 加入 <uses-permission android:name="android.permission.INTERNET"/>
看到这么多字符串是不是有点乱呢?之后的文章会来写如何解析json
注册有道翻译api
- 1 进入有道翻译 api申请网站http://fanyi.youdao.com/openapi?path=data-mode
- 2 获取自己的api 接口 也就是注册完下方给的地址
源码地址
http://oiskisse7.bkt.clouddn.com/app/GETdemo.zip
第一次写文章,知识尚浅,还请大神斧正
下一篇 文章将写如何用post方法来获取天气数据
- Android get/ post 方法 传递网络数据 -简单的翻译功能实现(GET)
- HTML数据的传递方式:get方法 和 post 方法
- 传递数据的两种方法GET和POST
- android post get方法实现
- Android利用Get、Post 获取网络数据
- java实现网络交互 get、post方法
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- 用CHttpFile实现简单的GET/POST数据
- Curl之【get/post】简单方法实现
- android 网络请求get,post实现
- GET与POST传递方法
- Android学习 - get和post的简单实现
- Android网络数据之向服务器提交数据的三种方式(get+post+AsyncHttpClient)
- 比较简单的Web请求(get/post)方法封装,调用网络接口时能用到
- 下决心,努力准备找工作~
- window下redis的安装及使用
- 软件系统设计思路
- C/C++函数形参包含字符&以及const
- redis -- 信号量
- Android get/ post 方法 传递网络数据 -简单的翻译功能实现(GET)
- 反射
- 关系数据库~SQL server
- Spring3- Spring AOP——自动创建Proxy
- ArcGIS多个面合并再后拆散
- 【Unity】开发日志3——拖尾渲染 Trial Renderer
- 在Mac上关于tomcat服务器的安装、配置、启动、部署web详细流程
- RuntimeException
- 在java中调用python方法