界面效果如图
package com.example.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Base64;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity{
private EditText content;//声明一个输入文本内容的编辑框对象
private Button button;//声明一个"发表"按钮对象
private Handler handler;//声明一个Handler对象
private String result="";//声明一个代表显示内容的字符串
private TextView resultTV;//声明一个显示结果的文本框对象
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//设置全屏显示
setContentView(R.layout.main);
content=(EditText)findViewById(R.id.content);
resultTV=(TextView)findViewById(R.id.result);
button=(Button)findViewById(R.id.button);
//为按钮添加单击事件监听
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if("".equals(content.getText().toString())){
Toast.makeText(MainActivity.this, "请输入要发表的内容!",
Toast.LENGTH_SHORT).show();//显示消息提示
return;
}
//创建一个新线程,用于发送并读取微博信息
new Thread(new Runnable() {
@Override
public void run() {
send();//发送文本至web服务器,并读取
Message m=handler.obtainMessage();//获取一个Message
handler.sendMessage(m);//发送消息
}
}).start();//开启线程
}
});
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if(result!=null){
resultTV.setText(result);//显示获得的结果
content.setText("");//清空编辑框
}
super.handleMessage(msg);
}
};
}
/*
* send()方法用于建立一个HTTP连接,并将输入的内容发送到Web服务器上,
* 再读取服务器的处理结果
* */
public void send() {
String target="http://192.168.1.100:8080/WeiXinTest/index.jsp?content="
+base64(content.getText().toString().trim());//要访问的url地址
URL url;
try {
url=new URL(target);//创建URL对象
HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();//创建一个HTTP连接
InputStreamReader in=new InputStreamReader(urlConn.getInputStream());//获得读取的内容
BufferedReader buffer=new BufferedReader(in);//获得输入流对象
String inputLine=null;
//通过循环逐行读取输入流中的内容
while((inputLine=buffer.readLine())!=null){
result+=inputLine+"\n";
}
in.close();//关闭字符输入流对象
urlConn.disconnect();//断开连接
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* 用GET方法传递中文参数时,会产生乱码,
* 需要用Base64编码来解决乱码问题
* */
private String base64(String content) {
try {
//对字符串进行Base64编码
content=Base64.encodeToString(content.getBytes("utf-8"),Base64.DEFAULT);
content=URLEncoder.encode(content);//对字符串进行URL编码
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return content;
}
}
<%@ page language="java" import="java.util.*,sun.misc.BASE64Decoder" pageEncoding="UTF-8"%>
<%
String content="";
if(request.getParameter("content")!=null){
content=request.getParameter("content");//获取输入的微博信息
//替换content中的加号,这是由于在进行URL编码时,将"+"号转换为了%2B
content=content.replaceAll("%2B","+");
BASE64Decoder decoder=new BASE64Decoder();
content=new String(decoder.decodeBuffer(content),"utf-8");
}
%>
<%="发一条微博,内容如下:" %>
<%=content %>
客户端测试结果如图
证明数据已经由客户端发至Web应用,然后经由服务端处理后发回客户端URL url=new URL("http://www.baidu.com");
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("POST");
界面效果如图
package com.example.test;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Base64;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity{
private EditText content;//声明一个输入文本内容的编辑框对象
private EditText nickname;//声明一个输入昵称的编辑框对象
private Button button;//声明一个"发表"按钮对象
private Handler handler;//声明一个Handler对象
private String result="";//声明一个代表显示内容的字符串
private TextView resultTV;//声明一个显示结果的文本框对象
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//设置全屏显示
setContentView(R.layout.main);
content=(EditText)findViewById(R.id.content);
nickname=(EditText)findViewById(R.id.nickname);
resultTV=(TextView)findViewById(R.id.result);
button=(Button)findViewById(R.id.button);
//为按钮添加单击事件监听
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if("".equals(content.getText().toString())){
Toast.makeText(MainActivity.this, "请输入要发表的内容!",
Toast.LENGTH_SHORT).show();//显示消息提示
return;
}
//创建一个新线程,用于发送并读取微博信息
new Thread(new Runnable() {
@Override
public void run() {
send();//发送文本至web服务器,并读取
Message m=handler.obtainMessage();//获取一个Message
handler.sendMessage(m);//发送消息
}
}).start();//开启线程
}
});
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if(result!=null){
resultTV.setText(result);//显示获得的结果
content.setText("");//清空编辑框
nickname.setText("");//清空昵称框
}
super.handleMessage(msg);
}
};
}
/*
* send()方法用于建立一个HTTP连接,并将输入的内容发送到Web服务器上,
* 再读取服务器的处理结果
* */
public void send() {
String target="http://192.168.1.113:8080/WeiXinTest/index.jsp";//要访问的url地址
URL url;
try {
url=new URL(target);//创建URL对象
HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();//创建一个HTTP连接
urlConn.setRequestMethod("POST");//指定使用POST请求方式
urlConn.setDoInput(true);//设置允许向连接中写入数据
urlConn.setDoOutput(true);//设置允许从连接中读取数据
urlConn.setUseCaches(false);//禁止缓存
urlConn.setInstanceFollowRedirects(true);//自动执行HTTP重定向
urlConn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");//设置内容类型
DataOutputStream out=new DataOutputStream(urlConn.getOutputStream());//获取输出流
String param="nickname="+URLEncoder.encode(nickname.getText().toString(),"utf-8")
+"&content="+URLEncoder.encode(content.getText().toString(),"utf-8");//连接要提交的数据
out.writeBytes(param);//将要传递的数据写入数据输出流
out.flush();//输出缓存
out.close();//关闭数据输出流
//判断相应是否成功
if(urlConn.getResponseCode()==HttpURLConnection.HTTP_OK){
InputStreamReader in=new InputStreamReader(urlConn.getInputStream());//获得读取的内容
BufferedReader buffer=new BufferedReader(in);//获得输入流对象
String inputLine=null;
//通过循环逐行读取输入流中的内容
while((inputLine=buffer.readLine())!=null){
result+=inputLine+"\n";
}
in.close();//关闭字符输入流对象
}
urlConn.disconnect();//断开连接
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String content=request.getParameter("content");//获取微博信息
String nickname=request.getParameter("nickname");//获取昵称
if(content!=null&&nickname!=null){
nickname=new String(nickname.getBytes("iso-8859-1"),"utf-8");//转码
content=new String(content.getBytes("iso-8859-1"),"utf-8");//转码
String date=new java.util.Date().toLocaleString();//获取系统时间
%>
<%="【"+nickname+"】于"+date+"发表一条微博,内容如下:" %>
<%=content %>
<% }%>
客户端测试结果如图
证明数据已经由客户端发至Web应用,然后经由服务端处理后发回客户端
转载请注明出处:http://blog.csdn.net/acmman/article/details/46414315