'http'에 해당되는 글 3건

  1. 2012.08.23 http request 요청 확인
  2. 2011.02.21 HTTP1.1 400 bad request
  3. 2010.02.01 [Android] HTTP 통신 기초
Programming/PHP2012.08.23 18:39

작성한 php를 요청하는 header, body를 출력하는 테스트 코드입니다.

HTTP_METHOD 인 GET, POST, PUT, DELETE 의 내용을 출력하도록 하였습니다.

GET, POST는 PHP에서 지원하는 기능을 활용하였고

PUT, DELETE는 raw data를 출력하도록 하였습니다.




신고
Posted by 초프(초보 프로그래머)
Programming/PHP2011.02.21 17:22
웹브라우저로는 잘 열리는데 프로그램 상에서 읽어오면 400 bad request 오류가 나는 경우가 있습니다.
http1.1 에서 get 또는 post로 값을 잘못 넘겼을때 발생한다고 합니다.
검색을 통해서 알아보니 Host : 헤더가 빠져서 그렇다고 했지만....
Host를 헤더에 넣어도 해결되지 않았습니다.

결국 찾은 것은  User-Agent 였습니다.

"User-Agent: ".$_SERVER['HTTP_USER_AGENT']

를 헤더에 추가하면 됩니다.



추가 
400 bad request 는 요청이 잘못되어 발생하는 경우 입니다.
정확한 해결방법은 각 서버에 따라 다 다릅니다.
어떤 요청을 원하는지 알아야 정확히 대응할 수 있습니다.
주로 parameter의 값이 없거나 잘못된 값일 경우 발생합니다.



신고
Posted by 초프(초보 프로그래머)
Programming/Android2010.02.01 14:55
http 프로토콜을 이용하여 통신을 하는 예제입니다.

주소에 해당되는 문서의 내용을 받아옵니다. 

여기서는 그냥 일반 html 문서서를 가져 오도록 해보았습니다.  
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Test extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        TextView text = (TextView)findViewById(R.id.htmlText);
        
        URL url = null;
        
		try {
			url = new URL("http://family7914.cafe24.com");
        	HttpURLConnection http = (HttpURLConnection)url.openConnection();
        	BufferedReader in = new BufferedReader(new InputStreamReader(http.getInputStream()));
        	StringBuffer buffer = new StringBuffer();
        	
        	int c;
        	
        	while((c=in.read()) != -1){
        		buffer.append((char)c);
        	}
        	
        	text.setText(buffer);
        	
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
}

 

코드를 실행해보면 위와 같은 결과가 나옵니다.

만약 결과가 나오지 않거나 오류가 발생한다면... 
처음으로 생각해 볼수 있는 것이 Manifest의 Permission 입니다. 
이건 우리가 어떤 기능을 사용할 것이다 라고 미리 알려주는 것입니다. 
그래야만 사용할 수 있거든요~
두번째는 제가 어리석어서 생긴 경우인데...
실행을 할 경우 문서의 용량이 크면 로딩이 길게 되어있습니다. 
그리고 그전에 디버깅을 위한 메세지가 뜨는데 그것을 그냥 오류로 생각해 버리는겁니다.
그러므로 메세지를 잘 확인하세요~ ^^;
신고
Posted by 초프(초보 프로그래머)