Android 개발 은 URLConnection 을 사용 하여 네트워크 프로 그래 밍 을 상세 하 게 설명 합 니 다.
6738 단어 AndroidURLConnection
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 열 어~효과 도 는 다음 과 같다.
첨부:전체 인 스 턴 스 코드 는 여 기 를 클릭 하 십시오본 사이트 다운로드
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.