尝试从Android模拟器连接到servlet,不起作用?

时间:2014-12-20 14:03:48

标签: android servlets android-emulator xampp localhost

我正在尝试从Android模拟器连接到localhost中的servlet。

我在Eclipse中创建了一个名为SimpleHttpGetRequest的项目,其中包含一个名为“HttpGetServletActivity”的活动。

我在NetBeans中创建了一个名为“HttpGetRequest”的项目,其中包含一个servlet。

我的“HttpGetServletActivity”活动中的代码是:

package com.mobdev.simplehttprequest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class HttpGetServletActivity extends Activity implements OnClickListener {
Button button;
TextView outputText;

public static final String URL = "http://10.0.2.2:8080/HttpGetRequest/HelloWorldServlet";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewsById();

    button.setOnClickListener(this);
}

private void findViewsById() {
    button = (Button) findViewById(R.id.button);
    outputText = (TextView) findViewById(R.id.outputTxt);
}

public void onClick(View view) {
    GetXMLTask task = new GetXMLTask();
    task.execute(new String[]{ URL });
}

private class GetXMLTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
        String output = null;
        for (String url : urls) {
            output = getOutputFromUrl(url);
        }
        return output;
    }

    private String getOutputFromUrl(String url) {
        StringBuffer output = new StringBuffer("");
        try {
            InputStream stream = getHttpConnection(url);
            BufferedReader buffer = new BufferedReader(
                    new InputStreamReader(stream));
            String s = "";
            while ((s = buffer.readLine()) != null)
                output.append(s);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        return output.toString();
    }

    // Makes HttpURLConnection and returns InputStream
    private InputStream getHttpConnection(String urlString)
            throws IOException {
        InputStream stream = null;
        URL url = new URL(urlString);
        URLConnection connection = url.openConnection();

        try {
            HttpURLConnection httpConnection = (HttpURLConnection) connection;
            httpConnection.setRequestMethod("get");
            httpConnection.connect();

            if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                stream = httpConnection.getInputStream();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return stream;
    }

    @Override
    protected void onPostExecute(String output) {
        outputText.setText(output);
    }
}
}

我的servlet的源代码是:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet extends HttpServlet {

public HelloWorldServlet() {
    super();
}

    @Override
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("Hello Android !!!!");
}
}
  • 我在Apache服务器中部署了我的servlet(我正在使用xampp);
  • 我添加了网络连接权限

当我运行我的应用程序并单击按钮时,应用程序崩溃,我不知道为什么! 请问有人帮帮我吗?我卡住了。

我试过了:

  • Wifi连接:我确实在真实设备上运行我的应用程序,而不是“10.0.2.2”我把我的电脑的IP地址但它不起作用;
  • 从Android模拟器浏览器访问项目HttpGetrequest,它有效;

0 个答案:

没有答案