0

私は問題があります。私はサーブレットと Android で冒険を始めており、「Hello world」を書き込む単純なサーブレットを設計しました。Android アプリでこのメッセージを受信したいと考えています。私のコード:

public class MyServlet extends Activity implements OnClickListener{

Button button;
TextView outputText;

public static final String URL = "http://10.0.2.2:8080/ServletExample/HelloServletExample";


@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) {

    String output = null;



        HttpClient httpclient = new DefaultHttpClient();
        try {
            HttpResponse response = httpclient.execute(new HttpGet(URL));
            HttpEntity httpEntity = response.getEntity();
            output = EntityUtils.toString(httpEntity);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    //} catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    //} catch (IOException e) {
        // TODO Auto-generated catch block
    //}



    outputText.setText(output);


}

私のサーブレット:

@WebServlet("/HelloServletExample")
public class HelloServletExample extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public HelloServletExample() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    PrintWriter out = response.getWriter();
    out.println("Hello World");

}

}

理由はわかりませんが、アプリがクラッシュします。いくつかの行をコメントアウトしてみましたが、問題は次の行であることがわかりました。

HttpEntity httpEntity = response.getEntity();

なんで?

4

1 に答える 1

0

API レベル >= 9を使用している場合 AsyncTaskは、Ui スレッドからネットワーク リクエストを作成するために使用する必要はありません。アクティビティの onCreate メソッドにStrictMode.ThreadPolicyを次のように追加するだけです。

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().
                                                   permitAll().build();

StrictMode.setThreadPolicy(policy); 
于 2012-12-29T21:37:20.940 に答える