Android 개발 은 URLConnection 을 사용 하여 네트워크 프로 그래 밍 을 상세 하 게 설명 합 니 다.

6738 단어 AndroidURLConnection
이 사례 는 안 드 로 이 드 개발 이 URLConnection 을 사용 하여 네트워크 프로 그래 밍 을 하 는 것 을 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
URL 의openConnection()방법 은 URLConnection 을 되 돌려 줍 니 다.이 대상 은 응용 프로그램 과 URL 간 의 통신 연결 을 표시 합 니 다.프로그램 은 URLConnection 인 스 턴 스 를 통 해 이 URL 에 요청 을 보 내 URL 참조 자원 을 읽 을 수 있 습 니 다.보통 URL 과 의 연결 을 만 들 고 요청 을 보 내 이 URL 에서 인 용 된 자원 을 읽 습 니 다.
다음 절차 가 필요 합 니 다:
a)URL 대상 을 호출 합 니 다openConnection()URLConnection 대상 을 만 드 는 방법
b)URLConnection 의 인자 와 일반 요청 속성 설정

conn.setRequestProperty("accept","*/*");
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("user-agent","Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1)");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

POST 요청 을 보 내 려 면 다음 두 줄 을 설정 해 야 합 니 다.conn.setDoInput(true):이 URLConnection 의 doInput 요청 헤더 필드 의 값 을 설정 합 니 다.coon.setDoOutput(true) :
c)호출connect():이 URL 에 인 용 된 자원 의 통신 링크 를 엽 니 다(이러한 연결 이 되 지 않 았 다 면).
연결 을 열 었 을 때(이때 connected 필드 의 값 이 true)connect 방법 을 호출 하면 이 호출 을 무시 합 니 다.
URLConnection 대상 은 두 단 계 를 거 칩 니 다.먼저 대상 을 만 든 다음 연결 을 만 듭 니 다.
대상 을 만 든 후 연결 을 만 들 기 전에 여러 가지 옵션(예 를 들 어 doInput 과 UseCaches)을 지정 할 수 있 습 니 다.연결 한 후에 설정 하면 오류 가 발생 합 니 다.연결 후에 만 할 수 있 는 작업(예 를 들 어 getContentLength)은 필요 하 다 면 암시 적 으로 연결 을 실행 합 니 다.
d)GET 방식 으로 만 요청 하면 connect 방법 으로 원 격 자원 과 의 실제 연결 을 만 들 면 요청 한 주소 에 데 이 터 를 전송 할 수 있 습 니 다.
포스트 방법 요청 이 필요 하 시 면요청 인 자 를 보 내 려 면 URLConnection 인 스 턴 스 에 대응 하 는 출력 흐름 을 가 져 와 야 합 니 다.

PrintWriter out=new PrintWriter(conn.getOutputStream());
//      
String n=EncodingUtils.getString("  ".getBytes(),"UTF-8");
out.write("name="+n+"&pwd="+pwd);
out.flush();//        

e)원 격 자원 을 사용 할 수 있 습 니 다.프로그램 은 원 격 자원 의 헤드 필드 에 접근 하거나 입력 흐름 을 통 해 원 격 자원 의 데 이 터 를 읽 을 수 있 습 니 다.
4.567914.입력 흐름 가 져 오기.
입력 흐름 에서 response 의 데 이 터 를 읽 습 니 다.
주의:
1)URLConnection 응답 내용 을 입력 스 트림 으로 읽 으 려 면 출력 스 트림 으로 요청 파 라 메 터 를 보 내 려 면 출력 스 트림 을 먼저 사용 하고 입력 스 트림 을 사용 해 야 한다.
2)URLConnection 류 의 도움 을 받 아 프로그램 은 GET 요청,POST 요청 을 보 내 고 사이트 의 응답 을 받 는 등 지정 한 사이트 와 정 보 를 편리 하 게 교환 할 수 있 습 니 다.
코드 작성 절 차 는 다음 과 같 습 니 다:
1.서버-웹 프로젝트 작성
새 Servlet--LoginServlet 을 만 들 고 사용자 의 로그 인 을 간단하게 실현 합 니 다~

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
  public LoginServlet() {
    // TODO Auto-generated constructor stub
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doPost(request, response);
  }
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String name=request.getParameter("name");
    String pwd=request.getParameter("pwd");
    System.out.println(name+"  "+pwd);
    OutputStream os=response.getOutputStream();
    if("xuxu".equals(name)&&"123".equals(pwd)){
      os.write(("  ").getBytes("UTF-8"));
    }else{
      os.write(("  ").getBytes("UTF-8"));
    }
    os.flush();
    os.close();
  }
}

2.안 드 로 이 드 프로젝트 를 새로 만 들 고 MainActivity 에서 각각 get 방법 과 post 방법 으로 사용자 의 로그 인 을 실현 합 니 다.

public class MainActivity extends Activity {
  private EditText name,pwd;
  public void get(View view){
    new Thread(){
      public void run() {
        try {
          URL url=new URL("http://169.254.244.141:8090/ConnectionServlet/LoginServlet"+
        "?name="+name+"&pwd="+pwd);
          URLConnection conn=url.openConnection();
          conn.connect();//         
          BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream()));
          String line=null;
          StringBuffer stringBuffer=new StringBuffer();//   ,           ,    
          while ((line=reader.readLine())!=null) {
            stringBuffer.append(line);
          }
          System.out.println(stringBuffer.toString());
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      };
    }.start();
  }
  public void post(View view){
    new Thread(){
      public void run() {
        try {
          URL url=new URL("http://169.254.244.141:8090/ConnectionServlet/LoginServlet"
        );
          URLConnection conn=url.openConnection();
          //    
          conn.setDoInput(true);
          conn.setDoOutput(true);
          conn.connect();//         
          PrintWriter printWriter=new PrintWriter(conn.getOutputStream());
          printWriter.write("name="+name+"&pwd="+pwd);
          printWriter.flush();
          printWriter.close();
          BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream()));
          String line=null;
          StringBuffer stringBuffer=new StringBuffer();
          while ((line=reader.readLine())!=null) {
            stringBuffer.append(line);
          }
          System.out.println(stringBuffer.toString());
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      };
    }.start();
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    name=(EditText) findViewById(R.id.name);
    pwd=(EditText) findViewById(R.id.pwd);
  }
}

3.실행,Tomcat 열 어~
효과 도 는 다음 과 같다.

첨부:전체 인 스 턴 스 코드 는 여 기 를 클릭 하 십시오본 사이트 다운로드
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기