마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 -> JSP-> MySQL->JSP->안드로이드 소스 구현중인데요..

0 추천

안드로이드 소스는 아래와 같구요.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
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 android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

import com.example.CameraActivity.R;

public class ConnTest extends Activity {
 /** Called when the activity is first created. */
 WebView login;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  login = (WebView) findViewById(R.id.login);

  InputStream is = null;

  String url = "http://[ip]/android_db_connector.jsp";
  // 요청한 url 문자열로 지정

  HttpClient httpclient = new DefaultHttpClient();
  // DefaultHttpClient 이용해서 http클라이언트 생성
  try {
   String key = "TAG0000001";
   String page = "0";
   ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
   // 이름하고 값을 쌍으로 저장할수 있는 형태 (NameValuePair)
   nameValuePairs.add(new BasicNameValuePair("key", key));
   // BasicNameValuePair 클래스를 이용하여 입력 id = java
   nameValuePairs.add(new BasicNameValuePair("page", page));

   String result = "";
   HttpParams params = httpclient.getParams();
   // 파라미터를 얻어와서
   HttpConnectionParams.setConnectionTimeout(params, 5000);
   // 5초 이상 연결이 안되면 끊어지게 (milliseconds 단위)

   HttpPost httppost = new HttpPost(url);
   // Post 방식의 요청

   UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(
     nameValuePairs, "UTF-8");
   // 다국어 처리
   httppost.setEntity(entityRequest);
   // 엔티티 지정

   HttpResponse response = httpclient.execute(httppost);
   // 실행하고 결과 response로 받아오기

   HttpEntity entityResponse = response.getEntity();
   // 엔티티 얻어오기
   is = entityResponse.getContent();
   // 응답된 데이터를 읽을수있는 입력스트림 넘어옴
   BufferedReader reader = new BufferedReader(new InputStreamReader(
     is, "UTF-8"), 8);
   // 인코딩 처리 버퍼드리더 얻어옴
   StringBuilder sb = new StringBuilder();
   String line = null;
   while ((line = reader.readLine()) != null) {
    sb.append(line).append("\n");
    // 한라인씩 읽어서 스트링 버퍼에 담음
   }
   is.close();
   // 인풋스트림 닫음
   result = sb.toString();
   // 서버에서 받아온 문자열 String으로 변환
   login.loadData(result, "text/html", "UTF-8");
   // 문자열 웹뷰로 뿌림

  } catch (IOException e) {
   e.printStackTrace();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   httpclient.getConnectionManager().shutdown();
   // httpclinet 닫음
  }
 }
}

웹서버의

이렇게 작성했습니다.

웹서버에서 http://ip:port/android_db_connector.jsp?key=TAG0000001&page=1

입력해서 들어가면 화면에 잘 나오더라구요.

근데 이클립스에서 실행하면 아래같은 에러가 나와요..

Invalid layout of java.lang.String at value
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (javaClasses.cpp:129), pid=9580, tid=9728
#  fatal error: Invalid layout of preloaded class
#
# JRE version: 7.0_21-b11
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.21-b01 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\workspace\LetsGoCJS\hs_err_pid9580.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp

아무리 검색을 해도 이유를 모르겠습니다 ㅠㅠ

도움좀 부탁드립니다.

 

시험모드 (970 포인트) 님이 2013년 12월 11일 질문
아... Run as -> 안드로이드 어플리케이션 하니 해결되는군요 ㄷㄷ....

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...