AppTest.jpg 


WebTest.png JspTest.png 

안녕하세요! 이제막 안드로이드를 공부하고있는 학생입니다.(위의 사진은 게시글을 다 읽으신 후 참고하시기 바랍니다~)


안드로이드를 조금 공부하다보니 facebook오픈소스가 있다는 것도 알게되었구요..


그래서 안드로이드와 웹(jsp)간에 통신을 해보고 싶었습니다.


예를 들어 페이스북 App에서 글을 게시하고 웹을 통해 페이스북을 접속하면 웹상에서도 그대로 게시한 글이 뜨게되잖아요?


그래서 저는 HttpProtocol을 이용해서 간단하게 App에서  값을 입력한 후 버튼을 누르면 jsp페이지에 띄워 보려고 합니다.


소스를 보시면 이렇습니다.


<MainActivity.java>

import java.util.ArrayList;


import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.params.HttpConnectionParams;

import org.apache.http.params.HttpParams;

import org.apache.http.util.EntityUtils;


import android.annotation.SuppressLint;

import android.app.Activity;

import android.os.Bundle;

import android.os.StrictMode;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener {

TextView tv_post;

Button btn_post;

EditText et_post;

@SuppressLint({ "NewApi", "NewApi", "NewApi" })

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv_post = (TextView)findViewById(R.id.tv_post);

btn_post = (Button)findViewById(R.id.btn_post);

et_post = (EditText)findViewById(R.id.et_post);

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

StrictMode.setThreadPolicy(policy);

btn_post.setOnClickListener(this);

}


@Override

public void onClick(View v) {

// TODO Auto-generated method stub

String url = "http://192.168.200.43:8080/HttpTest/Test11.jsp";

HttpClient http = new DefaultHttpClient();

String input = et_post.getText().toString();

try { 

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

nameValuePairs.add(new BasicNameValuePair("input", input));

HttpParams params = http.getParams();

HttpConnectionParams.setConnectionTimeout(params, 5000);

HttpConnectionParams.setSoTimeout(params, 5000);

HttpPost httpPost = new HttpPost(url);

UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(nameValuePairs, "EUC-KR");

httpPost.setEntity(entityRequest);

HttpResponse responsePost = http.execute(httpPost);

HttpEntity resEntity = responsePost.getEntity();

tv_post.setText( EntityUtils.toString(resEntity));

} catch(Exception e){e.printStackTrace();}

}

}


<activity_main.xml>

<?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_post"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content" />


    <Button

        android:id="@+id/btn_post"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="post" />


    <TextView

        android:id="@+id/tv_post"

        android:layout_width="fill_parent"

        android:layout_height="90dp"

        android:layout_weight="0.57"

        android:text="" />


</LinearLayout>


<Test11.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%

request.setCharacterEncoding("euc-kr");

String input = request.getParameter("input");

%>


<%

System.out.println("Test11.jsp 호출됨 input : " + input);

out.print(input);

%>


소스를 보시다 싶이 EditText를 통해 간단한 String값을 입력하여 Button을 누르면 설정해놓은 url을 통해 jsp파일을 호출하는 건대요.

서버로는 톰캣을 이용했습니다.

App을 휴대폰에 넣고 실행해 보았는대요.. 값을 입력한 후 버튼을 누르면 서버의 console상으론

System.out.println("Test11.jsp 호출됨 input : " + input) 이 부분이 찍힙니다.

이 부분이 찍히는 것으로 보아 일단 서버에 값이 들어오는 것을 확인 할 수 있는데...

문제는 jsp페이지를 띄어보면  out.print(input); 이부분이 계속 null로 찍히게됩니다..

Web에 대한 지식이 별로 없어서...ㅠ session을 이용해야 할 것 같다고하는대...어떻게 해결해야할지 잘 모르겠습니다.

콘솔뿐아니라 jsp페이지에도 App으로 입력한 값을 띄어보고싶은데.. 조언 좀 부탁 드리겠습니다~

아니면 다른 방법이 있다면 알려주시면 감사하겠습니다~


공지 사항 필독 했음