Android2010.10.01 08:49

오늘 부터 20개의 나라가 추가적으로 유료앱 판매 가능 국가가 되었고,
2주안에 18개국의 나라에서 추가적으로 유료앱 구매가능하게 되었습니다.

http://android-developers.blogspot.com/2010/09/more-countries-more-sellers-more-buyers.html
http://www.androidpub.com/831111

좋은 앱들이 많이 판매되기를~

Posted by 영겁회귀

댓글을 달아 주세요

Android2010.05.13 16:34
안드로이드에서 HTTP를 통한 데이타를 가져오는 방식은,
URL클래스 또는 HttpClient를 사용하는 방법이 있다.

1. URL 클래스 사용

 GET 방식으로 간편히 사용할수 있지만, POST방식은 파라미터를 전달하는 방식이 다르므로
이 대로는 파라미터를 전달할수 없다.

2. HTTPClient 사용
잘못된 예1

HttpPost에 URL과 전달할 파라미터들을 헤더에 추가하여 결과를 얻는다.
HttPost 에 정보 담기
-> HttpClient에서 요청을 실행 HttpResponse로 결과 리턴
-> HttpResponse의 getEntity로 inputstream을 얻어서 결과 얻기

결과를 얻어왔지만,
ㄱ. 파라미터가 제대로 넘어가지 않는 문제와
ㄴ. 한글을 인코딩에서 문제 발생

잘못된 예2

HttpParams 를 사용하여 파라미터를 전달하려함 (후에 안것이지만 HttpParams는 이런 용도가 아니라고 함)

그래서 사용한 방법은
NameValuePair 목록을 가지는 List를 활용하는 방법로 파라미터명 - 값을 List<NameValuePair>로 모아
HttpPost요청에 setEntity(new UrlEncodedFormEntity()) 한다.

결과를 얻어왔지만,
ㄱ. 파라미터가 제대로 넘어가지 않는 문제와
ㄴ. 한글을 인코딩에서 문제 발생

3. 성공한 예

HttpURLConnection을 사용.
PrintWriter를 통해 데이타를 보내고, HttpURLConnection을 통해 InputStream을 얻어 결과를 만든다. -> 파라미터 전송 성공

한글문제는 보내거나 받을때, 모두 최초의 스트림을 만들때 인코딩 문자열을 넘길수 있는 생성자를 통해 한글 인코딩을 전달하여 생성하니 한글도 정상적으로 동작.

Posted by 영겁회귀

댓글을 달아 주세요

  1. 배우고싶습니다.

    한번 따라해 볼려고 했더니
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(httpURLCon.getOutputStream(), "EUC-KR"));
    이 부분에서 에러가 납니다.
    IOException 에러 부분으로 바로 넘어가는데...
    뭐가 잘 못 된건지 모르겠습니다.

    package com.google.android.test_httpPost4;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;

    import org.apache.http.client.ClientProtocolException;

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.util.TypedValue;
    import android.widget.TextView;

    public class test_httpPost4 extends Activity {

    private ProgressDialog pDialog;
    private Dialog info_Dialog;

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

    final TextView tv = (TextView)findViewById(R.id.text1);

    try{
    URL url = new URL("http://www.koreapost.go.kr/servlet/kpp.post.postInfo");
    HttpURLConnection httpURLCon = (HttpURLConnection)url.openConnection();

    httpURLCon.setDefaultUseCaches(false);
    httpURLCon.setDoInput(true);
    httpURLCon.setDoOutput(true);
    httpURLCon.setRequestMethod("POST");
    httpURLCon.setRequestProperty("content-type", "application/x-www-form-urlencoded");


    StringBuffer sb = new StringBuffer();

    String searchkeyword = "구름";
    sb.append("sc_value").append("=").append(searchkeyword).append("&");
    sb.append("sc_displayflag").append("=").append("true").append("&");
    sb.append("sc_type").append("=").append("KOREAN").append("&");
    sb.append("sc_init").append("=").append("1").append("&");
    sb.append("sc_mode").append("=").append("LIST").append("&");

    pDialog=ProgressDialog.show(this, "", "reading...");

    PrintWriter pw = new PrintWriter(new OutputStreamWriter(httpURLCon.getOutputStream(), "EUC-KR"));

    pw.write(sb.toString());

    pw.flush();

    BufferedReader bf = new BufferedReader(new InputStreamReader(httpURLCon.getInputStream(), "EUC-KR"));
    StringBuilder buff = new StringBuilder();
    String line;

    while((line = bf.readLine()) != null){
    buff.append(line);
    }

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

    2010.10.18 15:24 [ ADDR : EDIT/ DEL : REPLY ]
    • 아마도 uses-permission 문제가 아닐까 싶은데요.
      해당 코드를 실행해 보시려면, android.permission.INTERNET 에 대한 권한이 필요합니다.
      Manifest 파일에 권한을 추가해보심이 좋겠습니다.
      그리고 에뮬레이터로 구동시 에뮬레이터도 네트워크가 유효해야 긁어올수있습니다.

      2010.10.21 14:42 신고 [ ADDR : EDIT/ DEL ]
    • 데이타를 긁어오는 주소가 변경되었습니다.
      http://www.koreapost.go.kr/kpmcfokp/gps/zipList3.action
      의 주소로 dong이라는 파리미터를 인코딩하셔서 넘기셔야 정상적으로 데이타를 가져오실수 있으실것 같네요.

      2010.11.08 09:01 신고 [ ADDR : EDIT/ DEL ]

Android2010.05.11 14:21
안드로이드에서 기본으로 제공하는 아이콘(또는 drawble밑 리소스들)을 사용하기 위해서

자바코드내에선
.setIcon(android.R.drawable.ic_menu_add) 
로 사용 가능하다.

레이아웃용 xml에서는 어떻게 사용하냐면
@android:drawable/ic_menu_add

@android:drawbale까지는 자동완성이 지원되지 않지만,
@android:drawable/ 까지 타이핑하면 자동완성 기능이 지원된다.
Posted by 영겁회귀

댓글을 달아 주세요