검색결과 리스트
글
http 통신은 다들 잘 알 것이다. 모바일 상에서는 java.net을 이용하여 이 내용을 사용하는데 get과 post가 자유롭다고 한다.
http 는 url을 통하여 데이터를 전송하는데 url 클래스 인자는 다음과 같이 두가지가 있다
URL(URL context, String spec)과 URL(String protocal, String host, int port, String file) 이다.
다음은 URL의 각 부분을 분리하는 메서드들이다.
메서드 | 리턴 | 설명 |
String getProtocal() | http | 통신 프로토콜 |
int getDefaultPort() | 80 | 디폴트 포트 |
int getPort() | -1 | URL의 포트, 없을 시 -1 |
String getHost() | www.url.com | 서버주소 |
String getFile() | /data?param=1 | path와 쿼리 |
String getPath() | /data | 서버 경로 |
String getQuery() | param=1 | 서버 전달 쿼리 변수 값 |
접속하는 주소가 정해지면 URLConnection 객체를 통해서 접근한다. 여기에 대한 메서드들은 다음과 같다.
메서드 | 설명 |
setConnectTimeout(int timout) | 연결 제한 시간을 1/1000 단위로 지정, 0일 경우 무한 |
setReadTimeout(int timeout) | 읽기 제한 시간 지정, 0일 경우 무한 |
set UseCaches(Boolean flag) | 캐시 사용 여부 지정 |
setDoInput(boolean flag) | 입력 지정 |
setDoOutput(boolean flag) | 출력 지정 |
setRequestProperty(String field, String value) | 요청 헤더 값 설정 |
addRequestProperty(String field, String value) | 헤더 속성 값 추가 |
다음은 간단히 HTML을 읽어오는 코드이다.
public class ImageViewActivity extends Activity{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button r_btn = (Button)findViewById(R.id.read);
r_btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
String html = DownloadHtml("http://google.com");
EditText edit = (EditText)findViewById(R.id.edit_txt);
edit.setText(html);
}
});
}
private String DownloadHtml(String string) {
StringBuilder html = new StringBuilder();
try{
URL url = new URL(string);
HttpURLConnection connect = (HttpURLConnection)url.openConnection();
if(connect!=null){
connect.setConnectTimeout(1000);
connect.setUseCaches(false);
if(connect.getResponseCode()==HttpURLConnection.HTTP_OK){
BufferedReader br = new BufferedReader(new InputStreamReader(connect.getInputStream()));
for(;;){
String line = br.readLine();
if(line==null) break;
html.append(line+'\n');
}
br.close();
}
connect.disconnect();
}
}
catch(Exception ex){}
return html.toString();
}
}
위에서 자바 코드를 썼지만 아파치 라이브러리를 이용하려면 다음과 같이 DownLoadHtml 부분을 바꿔 주면 된다.
HttpGet http = new HttpGet(string);
DefaultHttpClient client = new DefaultHttpClient();
String temp = "";
try{
HttpResponse response = client.execute(http);
String line = "";
BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
while((line=br.readLine())!=null){
temp+=(line+'\n');
}
br.close();
}
catch(Exception ex){}
return temp;
위에서 보면 메서드들을 이용해서 헤더를 통하여 오라클이나 타 데이터 베이스와도 통신이 가능 할 것이란 것을 추측 할 수 있다. 시간 나면 나중에 해 봐야겠다.
RECENT COMMENT