Android利用Get、Post 获取网络数据
2016-01-26 15:40
393 查看
首先是Get:
布局非常easy。就一个button,主要看一下MainActivity吧:
url为有道翻译提供的API,很方便。控制台输出如图:
接着是Post:
非常easy,这里仅仅给出提交post请求的Button的点击事件:
和Get相比有2点须要注意:
1.url与參数是分开的;
2.connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
布局非常easy。就一个button,主要看一下MainActivity吧:
package com.francis.httpget; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MyActivity extends Activity { BufferedReader bufferedReader; InputStreamReader inputStreamReader; InputStream inputStream; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new AsyncTask<String,Void,Void>() { @Override protected Void doInBackground(String... params) { try { URL url = new URL(params[0]); URLConnection connection = url.openConnection(); inputStream = connection.getInputStream(); inputStreamReader = new InputStreamReader(inputStream,"UTF-8"); bufferedReader = new BufferedReader(inputStreamReader); String line; while (true) { if ((line = bufferedReader.readLine()) != null) { System.out.println(line); } } } catch (Exception e) { e.printStackTrace(); } finally { try { bufferedReader.close(); inputStreamReader.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }.execute("http://fanyi.youdao.com/openapi.do?keyfrom=HttpGetFrancis&key=893755706&type=data&doctype=xml&version=1.1&q=这里是有道翻译API"); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.my, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
url为有道翻译提供的API,很方便。控制台输出如图:
接着是Post:
非常easy,这里仅仅给出提交post请求的Button的点击事件:
和Get相比有2点须要注意:
1.url与參数是分开的;
2.connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
// Post findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new AsyncTask<String,Void,Void>() { @Override protected Void doInBackground(String... params) { try { URL url = new URL(params[0]); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestMethod("POST"); outputStream = connection.getOutputStream(); outputStreamWriter = new OutputStreamWriter(outputStream,"UTF-8"); bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write("keyfrom=HttpGetFrancis&key=893755706&type=data&doctype=xml&version=1.1&q=这里是有道翻译API"); bufferedWriter.flush(); inputStream = connection.getInputStream(); inputStreamReader = new InputStreamReader(inputStream,"UTF-8"); bufferedReader = new BufferedReader(inputStreamReader); String line; while (true) { if ((line = bufferedReader.readLine()) != null) { System.out.println(line); } } } catch (Exception e) { e.printStackTrace(); } finally { try { bufferedReader.close(); inputStreamReader.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }.execute("http://fanyi.youdao.com/openapi.do"); } });
相关文章推荐
- HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
- AngualrJS中每次$http请求时的一个遮罩层Directive
- 深入Android通过Apache HTTP访问HTTP资源
- Exception in thread "http-bio-8081-exec-3" java.lang.OutOfMemoryError: PermGen space
- HAProxy一箭双雕——让一个端口完成两件事
- Android网络请求的第三库AsyncHttpclient
- 理解HTTP幂等性
- AngualrJS中每次$http请求时的一个遮罩层Directive
- linux网络子系统内核分析
- android Xutils Http模块分析
- JAVA利用HttpClient进行POST请求(HTTPS)
- DHT网络存储设计
- 项目修炼之路(2)测试-TCPCopy
- java网络编程(一)使用TCP协议完成客户端与服务端的数据传递
- http头文件User-Agent详解
- http header详解
- SGU 176 Flow construction-上下界网络流
- VirtualBox配置网络以及SSH登陆配置
- 网络资源:常用的图表类库插件
- Ubuntu NetworkManager 使用:Ubuntu的wired Networks 变灰色,无法连接网络