Android¶ÔÍøÂçµÄÖ§³Ö
AndroidÍêȫ֧³ÖJDK±¾ÉíµÄTCP,UDPÍøÂçͨÐÅAPI,Ò²¿ÉÒÔʹÓÃServerSocket,SocketÀ´½¨Á¢»ùÓÚTCP/IPÐÒéµÄÍøÂçͨÐÅ,»¹¿ÉÒÔʹÓÃDatagramSocket,Datagrampacket,MulticastSocketÀ´½¨Á¢
»ùÓÚUDPµÄÐÒéÍøÂçͨÐÅ.
ͬʱ֧³ÖJDKÌṩµÄURL,URLConnectionµÈÍøÂçͨÐÅAPI.
AndoirdgipÄÚÖÃÁËApacheµÄHttpClient,ÕâÑù¿ÉÒԷdz£·½±ãµÄ·¢ËÍHTTPÇëÇó,²¢»ñÈ¡HTTPÏìÓ¦.
1.SocketʵÏÖ
·þÎñÆ÷
package com.itheima.server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
* ServerSocket ·þÎñ¶Ë
* @Decription TODO
public class MyServer {
public static ArrayList<Socket> socketList
= new ArrayList<Socket>();
public static void main(String[] args) {
try {
//½¨Á¢serversocket
ServerSocket serverSocket = new ServerSocket(25000);
//·þÎñÆ÷Ò»Ö±ÔÚÔËÐÐ״̬
while(true){
//¿ªÊ¼¼àÌý
Socket socket = serverSocket.accept();
socketList.add(socket);
//Æô¶¯ÐµÄÏß³Ì
new ServerThread(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*
Ïß³ÌÀà
*/
package com.itheima.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class ServerThread extends Thread {
private Socket socket;
public ServerThread(Socket socket) throws IOException
{
//³õʼ»¯
this.socket = socket;
}
@Override
public void run() {
String ip = socket.getInetAddress().getHostAddress();
System.out.println("ip:"+ip);
BufferedReader br=null;
OutputStream out = null;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream(),
"UTF-8"));
out = socket.getOutputStream();
String content = null;
while((content=br.readLine())!=null){
System.out.println("À´×Ô¿Í»§¶Ë:"+content);
//ÊÖ¶¯¼ÓÉÏ»»ÐÐ ·û,²»È»Ã»¿Í»§¶ËÊÕ²»µ½
out.write((content+"\n").toUpperCase().getBytes("utf-8"));
System.out.println("·þÎñ·¢³öÈ¥ÁË:");
}
out.close();
br.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} |

²¼¾ÖÎļþ
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.itheima.mutithreadclient.MainActivity">
<!--½ÓÊÕÓû§ÊäÈëµÄÄÚÈÝ-->
<EditText
android:id="@+id/input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="ÇëÊäÈëÒª·¢Ë͵ÄÄÚÈÝ"/>
<Button
android:id="@+id/send"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="·¢ËÍ"/>
<!--½ÓÊÕ·þÎñ·µ»ØµÄÄÚÈÝ-->
<TextView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout> |
×ÓÏß³Ì
/** * Ïß³ÌÀà public class ClientThread implements Runnable{ private static final String TAG = "ClientThread";
private Socket s;
// ¶¨ÒåÏòUIÏ̷߳¢ËÍÏûÏ¢µÄHandler¶ÔÏó
private Handler handler;
// ¶¨Òå½ÓÊÕUIÏ̵߳ÄÏûÏ¢µÄHandler¶ÔÏó
public Handler revHandler;
// ¸ÃÏß³ÌËù´¦ÀíµÄSocketËù¶ÔÓ¦µÄÊäÈëÁ÷
BufferedReader br = null;
OutputStream os = null;
public ClientThread(Handler handler)
{
this.handler = handler;
}
public void run()
{
try
{
s = new Socket("192.168.1.103", 25000);
br = new BufferedReader(new InputStreamReader(
s.getInputStream()));
os = s.getOutputStream();
// Æô¶¯Ò»Ìõ×ÓÏß³ÌÀ´¶ÁÈ¡·þÎñÆ÷ÏìÓ¦µÄÊý¾Ý
new Thread()
{
@Override
public void run()
{
String content = null;
// ²»¶Ï¶ÁÈ¡SocketÊäÈëÁ÷ÖеÄÄÚÈÝ
try
{
while ((content = br.readLine()) != null)
{
// ÿµ±¶Áµ½À´×Ô·þÎñÆ÷µÄÊý¾ÝÖ®ºó£¬·¢ËÍÏûϢ֪ͨ³ÌÐò
// ½çÃæÏÔʾ¸ÃÊý¾Ý
Message msg = new Message();
msg.what = 0x123;
msg.obj = content;
handler.sendMessage(msg);
Log.i(TAG,"·þÎñ·µ»Ø"+content);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}.start();
// Ϊµ±Ç°Ï̳߳õʼ»¯Looper
Looper.prepare();
// ´´½¨revHandler¶ÔÏó
revHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// ½ÓÊÕµ½UIÏß³ÌÖÐÓû§ÊäÈëµÄÊý¾Ý
if (msg.what == 0x345)
{
// ½«Óû§ÔÚÎı¾¿òÄÚÊäÈëµÄÄÚÈÝдÈëÍøÂç
try
{
//ÊÖ¶¯¼ÓÉÏ»»Ðзû
os.write((msg.obj.toString() + "\r\n")
.getBytes("utf-8"));
Log.i(TAG, "ÊäÈëµÄ" + msg.obj.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
};
// Æô¶¯Looper
Looper.loop();
}
catch (SocketTimeoutException e1)
{
System.out.println("ÍøÂçÁ¬½Ó³¬Ê±£¡£¡");
}
catch (Exception e)
{
e.printStackTrace();
}
}
} |
Activity
/** * * ʹÓÃServketSocket×ö·þÎñͨÐÅ public class MainActivity extends AppCompatActivity {
private EditText input;
private TextView show;
private ClientThread clientThread;
private Button send;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input = (EditText) findViewById(R.id.input);
show = (TextView) findViewById(R.id.show);
send = (Button) findViewById(R.id.send);
/**
* ½ÓÊÕµ½ÏûÏ¢Òª¾ÍÏÔʾ
*/
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what==0x123){
show.append("\n"+msg.obj.toString());
}
}
};
//³õʼ»¯×ÓÏß³Ì
clientThread = new ClientThread(handler);
//Æô¶¯×ÓÏß³Ì
new Thread(clientThread).start();
send.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
String str = input.getText().toString().trim();
Message msg=new Message();
msg.what=0x345;
msg.obj=str;
//°ÑÄÚÈÝ·¢¸ø×ÓÏß³Ì
clientThread.revHandler.sendMessage(msg);
//Çå¿ÕÎı¾¿ò
input.setText("");
}
});
}
}
|
<!--Ìí¼ÓÍøÂçȨÏÞ--> <uses-permission android:name="android.permission.INTERNET"/> |
2.URLÁ¬½ÓÍøÂç

²¼¾Ö
<?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/et_url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="ÇëÊäÈëURLͼƬµØÖ·"/>
<Button
android:onClick="display"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ÏÔʾͼƬµØÖ·"/>
<ImageView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
|
Activity
/** * URLÁ¬½ÓÍøÂç * »ñÈ¡URLµØÖ· * ´ò¿ªÁ÷,»ñÈ¡Á÷µÄÄÚÈÝ public class MainActivity extends AppCompatActivity {
/*
±êʶ±íʾ³É¹¦
*/
private static final int SUCCESS = 1;
//·¾¶Ð´ËÀÁË Ò²¿ÉÒÔ»ñÈ¡µÄ·½Ê½
private String path ="http://img2.imgtn.bdimg.com/it/u=4114593003,3380074209&fm=21&gp=0.jpg";
/*
ͼƬ
*/
Bitmap bitmap;
/*
ÏÔʾͼƬ
*/
ImageView show;
/*
ÊäÈëµÄURL
*/
private EditText et_url;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_url = (EditText) findViewById(R.id.et_url);
show = (ImageView) findViewById(R.id.show);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case SUCCESS:
show.setImageBitmap(bitmap);
break;
}
}
};
}
/**
* »ñÈ¡ÊäÈëµÄµØÖ·²¢ÏÔʾͼƬ
* @param v µ±Ç°¶ÔÏó
*/
public void display(View v){
String strPath = et_url.getText().toString().trim();
if(TextUtils.isEmpty(strPath)){
Toast.makeText(this,"ÊäÈëµÄ·¾¶²»ÄÜΪ¿Õ",Toast.LENGTH_SHORT).show();
return ;
}
new Thread(new Runnable() {
@Override
public void run() {
try {
//»ñÈ¡URL
URL url = new URL(path);
//´ò¿ªÁ÷»ñÈ¡×ÊÔ´
InputStream in = url.openStream();
//ʹÓÃBitmapFactoryת»»ÎªBitmap
bitmap = BitmapFactory.decodeStream(in);
//»ñÈ¡ÏûÏ¢
Message msg = Message.obtain();
msg.what=SUCCESS;
msg.obj=bitmap;
handler.sendMessage(msg);
//¹Ø±Õ
// in.close();
//°ÑÎļþ±£´æµ½±¾µØ
in =url.openStream();
OutputStream out = openFileOutput("test.png",MODE_PRIVATE);
byte [] buf = new byte [1024];
int len=0;
while((len=in.read(buf))!=-1){
out.write(buf,0,len);
}
out.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}}
|
Ìí¼ÓÍøÂçȨÏÞ
<!--Ìí¼ÓÍøÂçȨÏÞ--> <uses-permission android:name="android.permission.INTERNET"/> |
3.URLConnectionÁ¬½ÓÍøÂç
ʹÓÃURLConnectionÁ¬½ÓÍøÂç
Get·½Ê½Ö»Òª »ñÈ¡ÇëÇóµØÖ·°ÑÇëÇó²ÎÊýÆ´½ÓÔÚURLµØÖ·ºóÃæ"?username="+user+"&password="+password
openConnection
ÉèÖÃÇëÇóÍ·ÐÅÏ¢
connect()½¨Á¢Êµ¼ÊÁ¬½Ó
»ñÈ¡ÊäÈëÁ÷conn.getInputStream
¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ
Post·½Ê½,
ÇëÇóµØÖ·
½«²ÎÊýµ¥¶ÀÆ´½ÓΪһ¸ö×Ö·û´®params="username="+user+"&password="+password
openConnection
ÉèÖÃÇëÇóÍ·ÐÅÏ¢
connect()½¨Á¢Êµ¼ÊÁ¬½Ó
setDoOuput(true)
setDoInput(true)
д³ö²ÎÊýconn.getOutPutStream().write(params.getBytes());
»ñÈ¡ÊäÈëÁ÷conn.getInputStream
¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ

·þÎñÆ÷Servlet
/** * LoginServlet * @Decription ´¦ÀíµÇ¼ÇëÇóµÄServlet @WebServlet(urlPatterns={"/login"}) public class LoginServlet extends HttpServlet {
@SuppressWarnings("deprecation")
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
* »ñÈ¡Óû§ÃûÓëÃÜÂ벢ת»»ÎªUTF-8
String user = request.getParameter("username");
/*String encode = URLEncoder.encode(user,"iso8859-1");
String decode = URLDecoder.decode(encode, "UTF-8");*/
String username =new String(user.getBytes("iso8859-1"),"utf-8");
System.out.println("Óû§Ãû:"+username);
String pwd=request.getParameter("password");
String password = new String(pwd.getBytes("iso8859-1"),
"UTF-8");
System.out.println("ÃÜÂë:"+password);
/*
* ÕâÀïдËÀÓû§ÃûÓëÃÜÂë,
* Õý³£ÊÇÈ¥Êý¾Ý¿â²éѯ
*/
PrintWriter writer = response.getWriter();
if("admin".equals(username)&&
"admin".equals(password)){
writer.write("SUCCESS");
}else{
writer.write("FAILURE");
}
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("================post===============");
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username:"+username+",password:
"+password);
if("admin".equals(username) &&
"admin".equals(password)){
response.getWriter().print("SUCCESS");
}else{
response.getWriter().print("failure");
}
}
} |
3.1getÇëÇóÓëPostÇëÇó
²¼¾Ö
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.itheima.urlconnection.MainActivity">
<EditText
android:id="@+id/et_user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="ÇëÊäÈëÓû§Ãû"/>
<EditText
android:id="@+id/et_pwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="ÇëÊäÈëÃÜÂë"/>
<Button
android:onClick="get"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="GETÇëÇó"/>
<Button
android:onClick="post"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="POST ÇëÇó"/>
<TextView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
|
Activity
/** * ʹÓÃURLConnectionÁ¬½ÓÍøÂç *Get·½Ê½Ö»Òª »ñÈ¡ÇëÇóµØÖ·°ÑÇëÇó²ÎÊýÆ´½ÓÔÚURLµØÖ·ºóÃæ"?username="+user+"&password="+password * openConnection * ÉèÖÃÇëÇóÍ·ÐÅÏ¢ * connect()½¨Á¢Êµ¼ÊÁ¬½Ó * »ñÈ¡ÊäÈëÁ÷conn.getInputStream * ¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ * Post·½Ê½, * ÇëÇóµØÖ· * ,½«²ÎÊýµ¥¶ÀÆ´½ÓΪһ¸ö×Ö·û´®params="username="+user+"&password="+password * openConnection * ÉèÖÃÇëÇóÍ·ÐÅÏ¢ * connect()½¨Á¢Êµ¼ÊÁ¬½Ó * setDoOuput(true) * setDoInput(true) * д³ö²ÎÊýconn.getOutPutStream().write(params.getBytes()); * »ñÈ¡ÊäÈëÁ÷conn.getInputStream * ¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ public class MainActivity extends AppCompatActivity {
private static final int SUCCESS = 1;
private static final int ERROR =2 ;
private static final String TAG ="MainActivity"
;
/*
ÇëÇóµÄ·¾¶
*/
private String path="http://192.168.1.103:8080/Login/login";
private TextView show;
private EditText et_user;
private EditText et_pwd;
/*
Handler ÏûÏ¢´¦Àí
*/
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
³õʼ»¯
*/
et_user = (EditText) findViewById(R.id.et_user);
et_pwd = (EditText) findViewById(R.id.et_pwd);
show = (TextView) findViewById(R.id.show);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case SUCCESS:
show.setText(msg.obj.toString());
break;
case ERROR:
Toast.makeText(MainActivity.this,"ÍøÂçÒì³£",Toast.LENGTH_SHORT).show();
break;
}
}
};
}
/**
* get ·½Ê½ÇëÇó
* @param v µ±Ç°×é¼þ
*/
public void get(View v){
String username = et_user.getText().toString().trim();
String password = et_pwd.getText().toString().trim();
if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
Toast.makeText(this,"Óû§Ãû»òÕßÃÜÂë²»ÄÜΪ¿Õ",Toast.LENGTH_SHORT).show();
return ;
}
final String urlName =path+"?username="+username+"&password="+password;
/*
getÇëÇó
*/
new Thread(){
@Override
public void run() {
try {
//»ñÈ¡ÇëÇóURLµØÖ·
URL url=new URL(urlName);
//´ò¿ªÁ¬½Ó
URLConnection conn = url.openConnection();
//ÉèÖó¬Ê±Ê±¼ä
conn.setConnectTimeout(5000);
// ÉèÖÃͨÓõÄÇëÇóÊôÐÔ
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection",
"Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)");
//½¨Á¢Êµ¼ÊÁ¬½Ó
conn.connect();
//»ñÈ¡ËùÓеÄÐÐÏìÓ¦ Í·×Ö¶Î
Map<String,List<String>> map = conn.getHeaderFields();
Set<String> keySet = map.keySet();
for (String key:keySet ) {
Log.i(TAG,"key"+key+"------------>"+map.get(key));
}
//¶¨ÒåÊäÈëÁ÷À´»ñÈ¡URLµÄÏìÓ¦
InputStream in = conn.getInputStream();
ByteArrayOutputStream bas= new ByteArrayOutputStream();
int len=0;
byte [] buf = new byte[1024];
while((len=in.read(buf))!=-1){
bas.write(buf,0,len);
}
//ת»»Îª×Ö·û´®
String result=bas.toString();
//ÉèÖÃÏûÏ¢¶ÔÏó
Message msg = Message.obtain();
//³É¹¦¾Í·¢ËÍSUCCESS
msg.what=SUCCESS;
msg.obj=result;
//·¢ËÍ
handler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
//³öÒì³£¾Í·¢ËÍERROR
Message msg = Message.obtain();
msg.what=ERROR;
handler.sendMessage(msg);
}
}
}.start();
}
/**
* post ·½Ê½ÇëÇó
* @param v µ±Ç°×é¼þ
*/
public void post(View v){
String username = et_user.getText().toString().trim();
String password = et_pwd.getText().toString().trim();
if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
Toast.makeText(this,"Óû§Ãû»òÕßÃÜÂë²»ÄÜΪ¿Õ",Toast.LENGTH_SHORT).show();
return ;
}
final String params="username="+username+"&password="+password;
/*
postÇëÇó
*/
new Thread(){
@Override
public void run() {
try {
//»ñÈ¡ÇëÇóURLµØÖ·
URL url=new URL(path);
//´ò¿ªÁ¬½Ó
URLConnection conn = url.openConnection();
//ÉèÖó¬Ê±Ê±¼ä
conn.setConnectTimeout(5000);
// ÉèÖÃͨÓõÄÇëÇóÊôÐÔ
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection",
"Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)");
postÇëÇó±ØÐëÓÐÒÔÏÂ2ÐÐ
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream out = conn.getOutputStream();
out.write(params.getBytes());
//½¨Á¢Êµ¼ÊÁ¬½Ó
//»ñÈ¡ËùÓеÄÐÐÏìÓ¦ Í·×Ö¶Î
Map<String,List<String>> map = conn.getHeaderFields();
Set<String> keySet = map.keySet();
for (String key:keySet ) {
Log.i(TAG,"key"+key+"------------>"+map.get(key));
}
//¶¨ÒåÊäÈëÁ÷À´»ñÈ¡URLµÄÏìÓ¦
InputStream in = conn.getInputStream();
ByteArrayOutputStream bas= new ByteArrayOutputStream();
int len=0;
byte [] buf = new byte[1024];
while((len=in.read(buf))!=-1){
bas.write(buf,0,len);
}
//ת»»Îª×Ö·û´®
String result=bas.toString();
//ÉèÖÃÏûÏ¢¶ÔÏó
Message msg = Message.obtain();
//³É¹¦¾Í·¢ËÍSUCCESS
msg.what=SUCCESS;
msg.obj=result;
//·¢ËÍ
handler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
//³öÒì³£¾Í·¢ËÍERROR
Message msg = Message.obtain();
msg.what=ERROR;
handler.sendMessage(msg);
}
}
}.start();
}
} |
Ìí¼ÓÍøÂçȨÏÞ
<!--Ìí¼ÓÍøÂçȨÏÞ--> <uses-permission android:name="android.permission.INTERNET"/> |
4.HttpÍøÂçÁ¬½Ó
ºÍURLConnection·Ç³£ÀàËÆÖ»»ñÈ¡Á¬½ÓΪHttpURULConnection
* ʹÓÃHttpURLConnectionÁ¬½ÓÍøÂç
*Get·½Ê½Ö»Òª »ñÈ¡ÇëÇóµØÖ·°ÑÇëÇó²ÎÊýÆ´½ÓÔÚURLµØÖ·ºóÃæ"?username="+user+"&password="+password
* openConnection
* ÉèÖÃÇëÇó·½·¨setRequestMethod("GET")±ØÐë´óд
*
* »ñÈ¡ÊäÈëÁ÷conn.getInputStream
* ¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ
*
* Post·½Ê½,
* ÇëÇóµØÖ·
* ,½«²ÎÊýµ¥¶ÀÆ´½ÓΪһ¸ö×Ö·û´®params="username="+user+"&password="+password
* openConnection
* ÉèÖÃÇëÇó·½·¨setRequestMethod("POST")±ØÐë´óд
* setDoOuput(true)
* setDoInput(true)
* д³ö²ÎÊýconn.getOutPutStream().write(params.getBytes());
* »ñÈ¡ÊäÈëÁ÷conn.getInputStream
* ¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ |
/** * ʹÓÃHttpURLConnectionÁ¬½ÓÍøÂç *Get·½Ê½Ö»Òª »ñÈ¡ÇëÇóµØÖ·°ÑÇëÇó²ÎÊýÆ´½ÓÔÚURLµØÖ·ºóÃæ"?username="+user+"&password="+password * openConnection * ÉèÖÃÇëÇó·½·¨setRequestMethod("GET")±ØÐë´óд * * »ñÈ¡ÊäÈëÁ÷conn.getInputStream * ¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ * Post·½Ê½, * ÇëÇóµØÖ· * ,½«²ÎÊýµ¥¶ÀÆ´½ÓΪһ¸ö×Ö·û´®params="username="+user+"&password="+password * openConnection * ÉèÖÃÇëÇó·½·¨setRequestMethod("POST")±ØÐë´óд * setDoOuput(true) * setDoInput(true) * д³ö²ÎÊýconn.getOutPutStream().write(params.getBytes()); * »ñÈ¡ÊäÈëÁ÷conn.getInputStream * ¶ÁÈ¡ÊäÈëÁ÷ÖеÄÄÚÈÝ public class MainActivity extends AppCompatActivity{ private static final int SUCCESS = 1; private static final int ERROR =2 ; private static final String TAG ="MainActivity" ; /* ÇëÇóµÄ·¾¶ */ private String path="http://192.168.1.100:8080/Login/login";
private TextView show;
private EditText et_user;
private EditText et_pwd;
Handler ÏûÏ¢´¦Àí
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
³õʼ»¯
et_user = (EditText) findViewById(R.id.et_user);
et_pwd = (EditText) findViewById(R.id.et_pwd);
show = (TextView) findViewById(R.id.show);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case SUCCESS:
show.setText(msg.obj.toString());
break;
case ERROR:
Toast.makeText(MainActivity.this, "ÍøÂçÒì³£",
Toast.LENGTH_SHORT).show();
break;
}
}
};
}
* get ·½Ê½ÇëÇó
* @param v µ±Ç°×é¼þ
public void get(View v){
String username = et_user.getText().toString().trim();
String password = et_pwd.getText().toString().trim();
if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
Toast.makeText(this,"Óû§Ãû»òÕßÃÜÂë²»ÄÜΪ¿Õ",Toast.LENGTH_SHORT).show();
return ;
}
final String urlName =path+"?username="+username+"&password="+password;
getÇëÇó
new Thread(){
@Override
public void run() {
try {
//»ñÈ¡ÇëÇóURLµØÖ·
URL url=new URL(urlName);
//´ò¿ªÁ¬½Ó
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//ÉèÖó¬Ê±Ê±¼ä
conn.setConnectTimeout(5000);
//ÉèÖÃÇëÇó·½Ê½
conn.setRequestMethod("GET");
//»ñÈ¡ÏìÓ¦Âë
int code = conn.getResponseCode();
if(code==200) {
//»ñÈ¡ËùÓеÄÐÐÏìÓ¦ Í·×Ö¶Î
Map<String, List<String>> map =
conn.getHeaderFields();
Set<String> keySet = map.keySet();
for (String key : keySet) {
Log.i(TAG, "key" + key + "------------>"
+ map.get(key));
}
//¶¨ÒåÊäÈëÁ÷À´»ñÈ¡URLµÄÏìÓ¦
InputStream in = conn.getInputStream();
ByteArrayOutputStream bas = new ByteArrayOutputStream();
int len = 0;
byte[] buf = new byte[1024];
while ((len = in.read(buf)) != -1) {
bas.write(buf, 0, len);
}
//ת»»Îª×Ö·û´®
String result = bas.toString();
//ÉèÖÃÏûÏ¢¶ÔÏó
Message msg = Message.obtain();
//³É¹¦¾Í·¢ËÍSUCCESS
msg.what = SUCCESS;
msg.obj = result;
//·¢ËÍ
handler.sendMessage(msg);
}else{
//³öÒì³£¾Í·¢ËÍERROR
Message msg = Message.obtain();
msg.what=ERROR;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
//³öÒì³£¾Í·¢ËÍERROR
Message msg = Message.obtain();
msg.what=ERROR;
handler.sendMessage(msg);
}
}
}.start();
}
/**
* post ·½Ê½ÇëÇó
* @param v µ±Ç°×é¼þ
*/
public void post(View v){
String username = et_user.getText().toString().trim();
String password = et_pwd.getText().toString().trim();
if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
Toast.makeText(this,"Óû§Ãû»òÕßÃÜÂë²»ÄÜΪ¿Õ",Toast.LENGTH_SHORT).show();
return ;
}
final String params="username="+username+"&password="+password;
/*
postÇëÇó
*/
new Thread(){
@Override
public void run() {
try {
//»ñÈ¡ÇëÇóURLµØÖ·
URL url=new URL(path);
//´ò¿ªÁ¬½Ó
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//ÉèÖó¬Ê±Ê±¼ä
conn.setConnectTimeout(5000);
//ÉèÖÃÇëÇó·½Ê½
conn.setRequestMethod("POST");
/*
postÇëÇó±ØÐëÓÐÒÔÏÂ2ÐÐ
*/
conn.setDoOutput(true);
OutputStream out = conn.getOutputStream();
out.write(params.getBytes());
//½¨Á¢Êµ¼ÊÁ¬½Ó
//»ñÈ¡ËùÓеÄÐÐÏìÓ¦ Í·×Ö¶Î
Map<String,List<String>> map = conn.getHeaderFields();
Set<String> keySet = map.keySet();
for (String key:keySet ) {
Log.i(TAG,"key"+key+"------------>"+map.get(key));
}
//¶¨ÒåÊäÈëÁ÷À´»ñÈ¡URLµÄÏìÓ¦
InputStream in = conn.getInputStream();
ByteArrayOutputStream bas= new ByteArrayOutputStream();
int len=0;
byte [] buf = new byte[1024];
while((len=in.read(buf))!=-1){
bas.write(buf,0,len);
}
//ת»»Îª×Ö·û´®
String result=bas.toString();
//ÉèÖÃÏûÏ¢¶ÔÏó
Message msg = Message.obtain();
//³É¹¦¾Í·¢ËÍSUCCESS
msg.what=SUCCESS;
msg.obj=result;
//·¢ËÍ
handler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
//³öÒì³£¾Í·¢ËÍERROR
Message msg = Message.obtain();
msg.what=ERROR;
handler.sendMessage(msg);
}
}
}.start();
}
} |
5.ʹÓÃApacheHttpClient
/** * ʹÓÃHttpClient×öÍøÂçÇëÇó 5.0¹ýÆÚ,6.0²»¿ÉÓà * * ½¨Á¢HttpClient¶ÔÏó getÇëÇó ½¨Á¢httpGet¶ÔÏó * setParamsÀ´ÉèÖòÎÊý * Ò²¿ÉÒÔ½«²ÎÊýÆ´½ÓÔÚURLµØÖ·ºóÃæ * postÇëÇó ½¨Á¢HttpPost¶ÔÏó * ÉèÖÃÇëÇóÌå * setEntity * new UrlEncodedFormEntity(List<? extends NameValuePair>) * ÉèÖòÎÊý * * »ñÈ¡ÐÐÏìÓ¦Âë,ÅжÏ, * »ñÈ¡ÐÐÏìÓ¦Ìå public class MainActivity extends Activity {
private static final int SUCCESS = 1;
private static final int ERROR = 2;
private static final String TAG = "MainActivity";
/*
* ÇëÇóµÄ·¾¶
*/
private String path = "http://192.168.1.100:8080/Login/login";
private TextView show;
private EditText et_user;
private EditText et_pwd;
private HttpClient client;
* Handler ÏûÏ¢´¦Àí
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
* ³õʼ»¯
client = new DefaultHttpClient();
et_user = (EditText) findViewById(R.id.et_user);
et_pwd = (EditText) findViewById(R.id.et_pwd);
show = (TextView) findViewById(R.id.show);
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case SUCCESS:
show.setText(msg.obj.toString());
break;
case ERROR:
Toast.makeText(MainActivity.this, "ÍøÂçÒì³£",
Toast.LENGTH_SHORT).show();
break;
}
}
};
}
* get ·½Ê½ÇëÇó
*
* @param v
* µ±Ç°×é¼þ
private String urlName ;
public void get(View v) {
String username = et_user.getText().toString().trim();
String password = et_pwd.getText().toString().trim();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
{
Toast.makeText(this, "Óû§Ãû»òÕßÃÜÂë²»ÄÜΪ¿Õ",
Toast.LENGTH_SHORT).show();
return;
}
try {
urlName = path + "?username="
+ URLEncoder.encode(username, "UTF-8")
+ "&password="
+ URLEncoder.encode(password, "UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
/*
* getÇëÇó
*/
new Thread() {
@Override
public void run() {
try {
HttpGet get = new HttpGet(urlName);
/**
* ¿ÉÒÔʹÓÃHttpParamsÉèÖòÎÊý HttpParams params = new
* BasicHttpParams();
*/
// ¿ªÊ¼Ö´ÐÐ
HttpResponse response = client.execute(get);
// »ñÈ¡ÏìÓ¦Âë
int code = response.getStatusLine().getStatusCode();
if (code == 200) {
// »ñÈ¡ÄÚÈÝÏìÓ¦ÌåÖеÄÄÚÈÝ
InputStream in = response.getEntity().getContent();
ByteArrayOutputStream bas = new ByteArrayOutputStream();
int len = 0;
byte[] buf = new byte[1024];
while ((len = in.read(buf)) != -1) {
bas.write(buf, 0, len);
}
String result = bas.toString();
in.close();
//ÉèÖÃÏûÏ¢
Message msg = Message.obtain();
msg.what = SUCCESS;
msg.obj = result;
handler.sendMessage(msg);
} else {
Message msg = Message.obtain();
msg.what = SUCCESS;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
* post ·½Ê½ÇëÇó
* @param v
* µ±Ç°×é¼þ
* @throws UnsupportedEncodingException
*/
public void post(View v) {
final String username = et_user.getText().toString().trim();
final String password = et_pwd.getText().toString().trim();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
{
Toast.makeText(this, "Óû§Ãû»òÕßÃÜÂë²»ÄÜΪ¿Õ",
Toast.LENGTH_SHORT).show();
return;
}
/*
* postÇëÇó
*/
new Thread() {
@Override
public void run() {
try {
//½¨Á¢PostÇëÇó
HttpPost post = new HttpPost(path);
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("username",
username));
parameters.add(new BasicNameValuePair("password",
password));
//ÉèÖÃÇëÇóÌåÓë×Ö·û±àÂë
post.setEntity(new UrlEncodedFormEntity(parameters,"UTF-8")
);
//Ö´ÐÐ
HttpResponse response = client.execute(post);
//»ñÈ¡ÏìÓ¦Âë
int code = response.getStatusLine().getStatusCode();
if (code == 200) {
// »ñÈ¡ÄÚÈÝÏìÓ¦ÌåÖеÄÄÚÈÝ
InputStream in = response.getEntity().getContent();
ByteArrayOutputStream bas = new ByteArrayOutputStream();
int len = 0;
byte[] buf = new byte[1024];
while ((len = in.read(buf)) != -1) {
bas.write(buf, 0, len);
}
String result = bas.toString();
in.close();
//ÉèÖÃÏûÏ¢
Message msg = Message.obtain();
msg.what = SUCCESS;
msg.obj = result;
handler.sendMessage(msg);
} else {
Message msg = Message.obtain();
msg.what = SUCCESS;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
} |
WebView
goBack():ºóÍË
goForward():ǰ½ø
loadUrl(String url):¼ÓÔØÖ¸¶¨URLµÄÍøÒ³
boolean zoomln():·Å´óÍøÒ³
zoomOut():ËõÐ¡ÍøÒ³

²¼¾Ö
<?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/et_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="ÇëÊäÈëurlÍøÖ·"/>
<WebView
android:id="@+id/wv_show"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</LinearLayout>
|
Activity
/** * WebViewСÐÍä¯ÀÀÆ÷ * */ public class MainActivity extends AppCompatActivity {
/*
½ÓÊÕÊäÈëµÄURL
*/
private EditText et_url;
/*
ÏÔÊ¾ÍøÒ³ÄÚÈÝ
*/
private WebView wv_show;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_url = (EditText) findViewById(R.id.et_url);
wv_show = (WebView) findViewById(R.id.wv_show);
}
@Override
public boolean onKeyDown(int keyCode,KeyEvent
event) {
if(keyCode==KeyEvent.KEYCODE_MENU){
String urlStr = et_url.getText().toString().trim();
//¼ÓÔØ
wv_show.loadUrl(urlStr);
return true;
}
return false;
}
} |
Ìí¼ÓȨÏÞ
<uses-permission android:name="android.permission.INTERNET"/> |
7.ʹÓÃWebHTML¼ÓÔØHTML´úÂë

WebViewÌṩÁËÒ»¾ß
loadData(String data,String mimeType ,String encoding)·½·¨ÓÃÓÚ¼ÓÔØHTML,Õâ¸ö·½·¨¼ÓÔØÖÐÎÄʱ»áÓÐÂÒÂë
»¹ÓÐÒ»¸ö
loadDataWithURL(String data,String mimeType ,String
encoding,String historyUrl)·½·¨ÊǵÚÒ»¸ö·½·¨µÄ¼ÓÇ¿,
data:Ö¸¶¨µÄHTML´úÂë
mimeType:Ö¸¶¨HTML´úÂëµÄMIMEÀàÐÍ,¶ÔÏóHTML´úÂë¿ÉÖ¸¶¨Îªtext/html
encoding:Ö¸¶¨HTML´úÂë±àÂëËùÓеÄ×Ö·û¼¯:UTF-8
²¼¾ÖÖÐÖ»ÓÐÒ»¸öWebView
/**
* WebViewÏÔʾHTML
public class MainActivity extends AppCompatActivity
{
private WebView webView_show;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//»ñÈ¡webView×é¼þ
webView_show = (WebView) findViewById(R.id.webView_show);
StringBuilder sb = new StringBuilder();
sb.append("<html>");
sb.append("<head>");
sb.append("<title> »¶ÓWebViewÏÔʾHTML</title>");
sb.append("</head>");
sb.append("<body>");
sb.append("<h1 align='center' style='color:red'>ÏÔʾÖÐÎıêÌâ</h1>");
sb.append("</body>");
sb.append("</html>");
//¼ÓÔØ²¢ÏÔʾHTMLÕâ¸öÖÐÎÄ»áÏÔʾÂÒÂë
//webView_show.loadData(sb.toString(),"text/html","utf-8");
webView_show.loadDataWithBaseURL(null,sb.toString(),"text/html","utf-8",null);
}
} |
8.WebViewʹÓÃJavaScriptµ÷ÓÃAndroid
²½Öè:
1.µ÷ÓÃWebViewµÄget getSettings·½·¨»ñÈ¡WebSettings
2.ÆôÓÃJAVAScriptµ÷Óù¦ÄÜ
webSettings.setJavaScriptEnable(true)
3.µ÷ÓÃwebViewµÄaddJavaScript(Object obj,String name)·½·¨
4.ÔÚjavaScript½Å±¾ÖÐͨ¹ý¸Õ²Å±©Â¶µÄname¶ÔÏóµ÷ÓÃAndroid
5.¶ÔÏóµÄ·½·¨ÉϱØÐë¼ÓÉÏ×¢½â
Õâ¾ß×¢½âÖ»ÄÜÓÃÔÚ·½·¨
HtmlÔÚassetsĿ¼ÏÂ
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>JS µ÷ÓÃ</title>
</head>
<body>
<!-- ×¢Òâ´Ë´¦µÄmyObjÊÇAndroid±©Â¶³öÀ´µÄ¶ÔÏó -->
<input type="button" value="µ¯Toast"
onclick="person.show();"/>
<input type="button" value="ͼÊéÁбí"
onclick="person.showList();"/>
</body>
</html> |
²¼¾Ö
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout> |
JAVABean:
/**
public class Person {
private String name;
private int age;
private Context mContext;
public Person(Context context){
this.mContext = context;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@JavascriptInterface
public void show(){
Toast.makeText(mContext,"ÐÕÃû"+this.name+",ÄêÁä:"+age,Toast.LENGTH_SHORT).show();
}
* Õâ¾ß×¢½âÖ»ÄÜÓÃÔÚ·½·¨
@JavascriptInterface
public void showList(){
new AlertDialog.Builder(mContext)
//ÉèÖñêÌâ
.setTitle("ÈËÔ±Áбí")
.setIcon(R.mipmap.ic_launcher)
.setItems(new String [] {"JAVA","Android","C++","C","PYTHON"},null)
.setPositiveButton("È·¶¨",null)
.setNegativeButton("È¡Ïû",null)
.create().show();
}
} |
Activity
/**
* WebViewʹÓÃJavaScript
public class MainActivity extends AppCompatActivity
{
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("file:///android_asset/test.html");
//»ñÈ¡WebViewÉèÖöÔÏó
WebSettings webSettings = webView.getSettings();
//ÆôÓÃjavaScript
webSettings.setJavaScriptEnabled(true);
Person person = new Person(this);
person.setName("ÕÅÈý");
person.setAge(18);
//´«µÝ¶ÔÏó
webView.addJavascriptInterface(person, "person");
}
} |
|