2 qiaojiew qiaojiew 于 2013.12.27 15:08 提问

跪求高手帮忙看下程序为什么android连接不到servlet上,谢谢大家了

android客户端
package com.android.helloworld;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class ButtonDemo extends Activity{
private Button button;
private String username;
private String psw;
private EditText editText;
private EditText editText2;
public void onCreate(Bundle queding){
super.onCreate(queding);
/**
* 设置界面
/
setContentView(R.layout.activity_main);
/
*
* 根据ID找到界面上的按钮对象
/
button=(Button) findViewById(R.id.button1);
/
*
* 为按钮绑定点击时间
*/
button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            /**
             * 根据ID找到界面中的输入框
             */
            editText=(EditText) findViewById(R.id.editText1);
            /**
             * 根据ID找到界面中的输入框
             */
            editText2=(EditText) findViewById(R.id.editText2);
            /**
             * 把输入框中的内容去除空格后获得并且交给变量
             */
            username=editText.getText().toString().trim();
            /**
             * 把输入框中的内容去除空格后获得并且交给变量
             */
            psw=editText2.getText().toString().trim();
            /**
             * 构建需要传输的XML
             */
            /**
             * 将构建的XML转化成字符串
             */
            String xml="username"+username+"psw"+psw;

// /**
// * 打印日志
// /
// Log.i("得到数据", "用户名"+username+"密码"+psw);
/
*
* 打印看获得的数据和用户输入的数据是否一样
/
System.out.println("用户名"+username+"密码"+psw);
try {
/
*
* 服务器位置
/
URL url=new URL("http://127.0.0.1:8080/TestAndroid/1.do");
/
*
* 打开一个服务器的连接
/
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
/
*
* 设置超时时间 单位毫秒
/
connection.setConnectTimeout(5000);
/
*
* 允许输入
/
connection.setDoInput(true);
/
*
* 允许输出
/
connection.setDoOutput(true);
/
*
* 设置不允许用缓存
/
connection.setUseCaches(false);
/
*
* 设置请求方法
/
connection.setRequestMethod("POST");
/
*
* 设置发送字符串的编码格式
/
connection.setRequestProperty("Conten-Type", "text/xml;charset=UTF-8");
/
*
* 通过IO流的方式发送数据给服务器
/
OutputStream outputStream=connection.getOutputStream();
/
*
* 设置将XML转化为字节的形式进行传输,编码方式是UTF-8
/
outputStream.write(xml.getBytes("UTF-8"));
/
*
* 将输出流交给数据流发送
/
DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
/
*
* 将数据发送出去并且清空数据输出流
/
dataOutputStream.flush();
/
*
* 关闭输出流并且释放占用的资源空间
*/
dataOutputStream.close();

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
}

}
servlet端
package testservlet;

import java.io.BufferedInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// response.setContentType("text/xml;charset=utf-8");
// BufferedInputStream bufferedInputStream=new BufferedInputStream(request.getInputStream());
// byte[] bytes=new byte[1024*1024];
// int len=0;
// while((len=bufferedInputStream.read(bytes))!=-1){
// System.out.println(bytes);
// System.out.println(bytes.toString());
// }
// System.out.println(len);
System.out.println(111111);
}
}

有知道的告诉下怎么才可以解决
谢谢了
QQ704532683

1个回答

qq983742902
qq983742902   2013.12.31 15:17
已采纳

Android的网络操作不能放在UI线程中,你的按钮点击事件就是发生在UI线程里,你应该新开一个线程和Message来处理你请求Servlet,然后用Handler来接收处理线程的消息。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!