안드로이드에서 https 게시물을 테스트 중이며 2 개의 안드로이드 장치가 있습니다.이 코드는 내 2.3 장치에서 완벽하게 작동하지만 내 4.1 장치에서 "retcode = urlCon.getResponseCode();가 차단됩니다." 또한 스니퍼의 패킷을 검사하여 게시물 요청이 전송되었고 서버가 https 응답에 응답했지만 여전히 시간 초과가 될 때까지 차단되었습니다.https post in android 4.0
private String GetHttpPage(HttpsURLConnection urlsCon,String host,String url,String reference,boolean type,String curcookie,String postparam){
String query = postparam;
byte[] entitydata = query.getBytes();
String line="";
HttpURLConnection urlCon=urlsCon;
try{
String domain="";
String fullurl=host+url;
if(urlCon==null){
if(host.indexOf("https")!=-1){
urlCon =GetHttpsConnect(fullurl);
domain=host.substring(8);
}
else{
urlCon =GetHttpConnect(fullurl);
domain=host.substring(7);
}
}
urlCon.setConnectTimeout(30000);
urlCon.setReadTimeout(30000);
if(reference!=null)
urlCon.setRequestProperty("Referer", reference);
urlCon.setRequestProperty("Cache-Control", "no-cache");
urlCon.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)");
urlCon.setRequestProperty("Accept-Encoding", "identity");
urlCon.setRequestProperty("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*");
urlCon.setRequestProperty("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
urlCon.setRequestProperty("connection", "Keep-Alive");
urlCon.setRequestProperty("Host", domain);
//
if(curcookie.length()>0)
urlCon.setRequestProperty("Cookie", curcookie);
if(type){
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
urlCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlCon.setRequestProperty("Content-Length",String.valueOf(entitydata.length));
urlCon.setRequestMethod("POST");
}
else{
urlCon.setDoOutput(false);
urlCon.setDoInput(true);
urlCon.setRequestMethod("GET");
}
urlCon.connect();
if(type){
OutputStream outStream = urlCon.getOutputStream();
outStream.write(entitydata, 0, entitydata.length);
// outStream.write(entitydata);
outStream.flush();
outStream.close();
}
retcode=urlCon.getResponseCode();
if(urlCon.getHeaderField("Location")!=null)
redirect=urlCon.getHeaderField("Location");
Map m=urlCon.getHeaderFields();
Set set=m.entrySet();
Iterator it=set.iterator();
while(it.hasNext())
{
Map.Entry me=(Map.Entry)it.next();
String skey=me.getKey()!=null?me.getKey().toString():"";
String svalue=me.getValue()!=null?me.getValue().toString():"";
if(skey.compareToIgnoreCase("Set-Cookie")==0){
String tempcookie=svalue;
tempcookie=tempcookie.substring(1, tempcookie.length()-1);
cookie+=ProcessCookie(tempcookie);
//cookie=cookie.substring(0, cookie.length()-2);
}
}
// if(urlCon.getHeaderField("Set-Cookie")!=null)
// cookie=urlCon.getHeaderField("Set-Cookie");
BufferedReader in = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
String subline="";
while ((subline = in.readLine()) != null) {
line+=subline;
}
in.close();
}
catch(IOException e){
String aaa=e.toString();
Log.e("xx", aaa);
}
catch(Exception e){
String aaa=e.toString();
Log.e("xx", aaa);
}
if(urlCon!=null)
urlCon.disconnect();
return line;
}
답장을 보내 주셔서 감사합니다. 권한이 적용되었지만 2.3 장치에서 작동하는 이유가 궁금합니다. – mailart