java---网络请求
2015-03-29 14:47
337 查看
1,使用URLDecoder和URLEncoder
URLDecoder类(编码):用于将把一些乱码的特殊的字符转化成普通的字符串。——方法:decoder(String s,String enc)静态方法
URLEncoder类(译码):用于把普通的字符串转化成特殊的字符。—-方法:encoder(String s,String enc)
2,使用URL和URLConnection
URL对象代表的是统一资源定位器,它是指向互联网“资源”的指针
URL类的一堆方法:
String getFile():获取该URL的资源名。
String getHost():获取该URL的主机名。
String getPaht():获取该URL的路径部分。
int getPort():获取端口号
URLConnection openConnection();返回一个URLConnection对象,它代表了与URL所引用的远程对象的链接。
InputStream getInputStream();打开与此URL的链接,返回一个URL资源的inputstream,通过该方法可以很方便的读取远程的资源—-甚至是实现多线程下载。
3,URLConnection:表示应用程序和URL之间的通信链接
HttpURLConnection:表示应用程序和URL之间的http链接
(1)通过URL的openConnection方法来创建URLConnection对象
(2)设置URLConnection的参数和普通请求属性
(3)如果只是发送get请求,则使用connect()方法建立和远程资源之间的实际链接即可;如果需要发送POST方式的请求,则需要获取URLConnection实例对应的输出流来发送请求参数。
get请求:
URL url=new URL(path);
URLConnection conn=url.openConnection();
conn.connect();
格式:将请求的参数放在URL字符串之后,以?隔开。程序直接调用URLConnection对象的connect()方法即可
如果是发送POST请求,则需要设置doIn和doOut两个请求头字段的值,在使用URLConnection对应的输出流设置请求参数
响应:get和post的响应方式都一样,获取URLConnection的输入流
(4),远程资源变为可用,程序访问远程资源的头字段或输入流读取远程资源。
URLConnection的一堆方法:
objec getContent();获取URLConnection的内容
Stirng getHeaerField(String name):获取指定响应头字段的值。
***getInputStream()返回URLConnection对应的输入流,用于获取URLConnection响应的内容
getOutputStream():返回URLConnection对应的输出流,用于向URLConnection发送请求参数。*
Android端的网络请求:
这里主要用HttpUrlConnection这个类
网络的连接:
String spec=”xxx.xxx.xxx”;
URL url=new URL(spec);
打开连接;
HttpUrlConnection connection=(HttpUrlConnection)url.openConnection;
设置请求方式
connection.setRequestMethod(“POST”);
connection.setDoInputTime(5000);
connection.setDoOutputTime(5000);
数据的格式要求:
String data=”&name=”+URLEncoder.encode(name,”UTF-8”)+”&password=”+URLEncoder.encode(password,”UTF-8”);
获取输出流:
outputStream output=connetion.getOutputStream();
output.write(date.getBytes());
output.flush();
获取输入流:
InputStream input=connection.getInputStream();
WebView组件:一个浏览器的实现。
一些方法:void goBack();后退
void goForward();前进
void loadUrl(String url);加载指定URL对应的网页
boolean zoomIn()放大网页
boolean zoomOut()缩小网页
URLDecoder类(编码):用于将把一些乱码的特殊的字符转化成普通的字符串。——方法:decoder(String s,String enc)静态方法
URLEncoder类(译码):用于把普通的字符串转化成特殊的字符。—-方法:encoder(String s,String enc)
String data = ""; if (params != null) { for (Entry<String, String> i : params.entrySet()) { try { data += "&" + URLEncoder.encode(i.getKey(), "UTF-8") + "=" + URLEncoder.encode(i.getValue(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }
2,使用URL和URLConnection
URL对象代表的是统一资源定位器,它是指向互联网“资源”的指针
URL类的一堆方法:
String getFile():获取该URL的资源名。
String getHost():获取该URL的主机名。
String getPaht():获取该URL的路径部分。
int getPort():获取端口号
URLConnection openConnection();返回一个URLConnection对象,它代表了与URL所引用的远程对象的链接。
InputStream getInputStream();打开与此URL的链接,返回一个URL资源的inputstream,通过该方法可以很方便的读取远程的资源—-甚至是实现多线程下载。
3,URLConnection:表示应用程序和URL之间的通信链接
HttpURLConnection:表示应用程序和URL之间的http链接
(1)通过URL的openConnection方法来创建URLConnection对象
(2)设置URLConnection的参数和普通请求属性
(3)如果只是发送get请求,则使用connect()方法建立和远程资源之间的实际链接即可;如果需要发送POST方式的请求,则需要获取URLConnection实例对应的输出流来发送请求参数。
get请求:
URL url=new URL(path);
URLConnection conn=url.openConnection();
conn.connect();
格式:将请求的参数放在URL字符串之后,以?隔开。程序直接调用URLConnection对象的connect()方法即可
如果是发送POST请求,则需要设置doIn和doOut两个请求头字段的值,在使用URLConnection对应的输出流设置请求参数
响应:get和post的响应方式都一样,获取URLConnection的输入流
(4),远程资源变为可用,程序访问远程资源的头字段或输入流读取远程资源。
URLConnection的一堆方法:
objec getContent();获取URLConnection的内容
Stirng getHeaerField(String name):获取指定响应头字段的值。
***getInputStream()返回URLConnection对应的输入流,用于获取URLConnection响应的内容
getOutputStream():返回URLConnection对应的输出流,用于向URLConnection发送请求参数。*
package hk.wangdao.main; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.net.URLEncoder; import java.util.Map; import java.util.Map.Entry; import android.os.Handler; import com.google.gson.JsonSyntaxException; public class Internet { // 主线程的handler private Handler mHandler = new Handler(); public interface onCallback { public void callback(String response); } public void connetion(final String urlStr, final Map<String, String> params, final onCallback callback) { new Thread() { public void run() { URL url = null; try { url = new URL(urlStr); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } HttpURLConnection connetion = null; String data = ""; if (params != null) { for (Entry<String, String> i : params.entrySet()) { try { data += "&" + URLEncoder.encode(i.getKey(), "UTF-8") + "=" + URLEncoder.encode(i.getValue(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } try { connetion = (HttpURLConnection) url.openConnection(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { connetion.setRequestMethod("POST"); } catch (ProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } connetion.setReadTimeout(5000); connetion.setConnectTimeout(5000); connetion.setDoInput(true); connetion.setDoOutput(true); OutputStream output; try { output = connetion.getOutputStream(); output.write(data.getBytes()); output.flush(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { if (connetion.getResponseCode() == 200) { InputStream in = connetion.getInputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); int len; byte[] buffer = new byte[1024]; //放到字节数组buffer中去 while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } in.close(); out.close(); final String result = new String(out.toByteArray()); // 这里把线程放到handler所在的线程中去 mHandler.post(new Runnable() { @Override public void run() { callback.callback(result); } }); } } catch (JsonSyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); } }
Android端的网络请求:
这里主要用HttpUrlConnection这个类
网络的连接:
String spec=”xxx.xxx.xxx”;
URL url=new URL(spec);
打开连接;
HttpUrlConnection connection=(HttpUrlConnection)url.openConnection;
设置请求方式
connection.setRequestMethod(“POST”);
connection.setDoInputTime(5000);
connection.setDoOutputTime(5000);
数据的格式要求:
String data=”&name=”+URLEncoder.encode(name,”UTF-8”)+”&password=”+URLEncoder.encode(password,”UTF-8”);
获取输出流:
outputStream output=connetion.getOutputStream();
output.write(date.getBytes());
output.flush();
获取输入流:
InputStream input=connection.getInputStream();
WebView组件:一个浏览器的实现。
一些方法:void goBack();后退
void goForward();前进
void loadUrl(String url);加载指定URL对应的网页
boolean zoomIn()放大网页
boolean zoomOut()缩小网页
相关文章推荐
- java网络编程二:服务器处理多个用户请求的解决方案(返回多个用户输入的信息)
- java网络编程二:服务器处理多个用户请求的解决方案(返回多个用户输入的信息)
- java 接口回调经典案例--网络请求回调
- [置顶] 网络请求以及网络请求下载图片的工具类 android开发java工具类
- [疯狂Java]网络:GET/POST请求、设置请求属性、获取响应属性
- JAVA高级视频 网络编程 05 服务器端接受客户端请求的代码
- Android网络请求报错:java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
- Java笔记7:最简单的网络请求Demo
- java 模仿网络请求 实现手机发送短信
- java HttpClicent网络请求与解析
- java网络请求工具方法
- Java请求网络图片返回流
- java网络编程中向指定URL发送GET POST请求示例
- Java&Android开源库代码剖析】のandroid-async-http(如何设计一个优雅的Android网络请求框架,同...
- java okhttp 网络请求
- java网络编程二:服务器处理多个用户请求的解决方案(返回多个用户输入的信息)
- 【Android】【嘿!Java】Android工程、Java工程中通过HttpClient请求网络数据的不同方式
- 关于网络请求的一个异常bug(java.lang.IllegalArgumentException: Host name may not be null)
- [置顶] Android开发之java代码工具类。判断当前网络是否连接并请求下载图片
- [Java语言] Java网络请求工具类