Tôi kết nối với hai máy chủ (PROD là https, máy chủ thử nghiệm là http) trên đơn đăng ký của tôi.Sự khác nhau giữa httpconnection trên J2ME và HttpUrlConnection trên Android (http error 401)
trên J2ME: Tôi có thể kết nối với hai máy chủ này mà không gặp sự cố. trên Android Tôi không thể kết nối với máy chủ thử nghiệm. Khi kết nối là http, nếu tôi không sử dụng setChunkedStreamingMode
, tôi không thể nhận được responseCode(StringIndexOutOfBoundsException);
nếu tôi sử dụng setChunkedStreamingMode
, mã phản hồi là 401
. Tôi nên làm gì, lỗi của tôi ở đâu ??
Đây là mã Android của tôi, Ngoài ra nếu bạn muốn xem mã J2ME, tôi cũng có thể thêm mã.
URL url = new URL(getUrl());
URLConnection conn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setConnectTimeout(10000);
httpConn.setRequestProperty("User-Agent", util.getDeviceFullModel()
+ " " + util.getSoftwareVersion());
httpConn.setRequestProperty("Accept-Charset", "utf-8");
httpConn.setRequestProperty("Content-Type",
"text/xml; charset=utf-8");
httpConn.setRequestProperty("SOAPAction",
"http://tempuri.org/IAuthenticationServiceForGroup/"+conTypeString);
httpConn.setRequestProperty("Software-Version", AppData.VERSION);
httpConn.setChunkedStreamingMode(getParams().getBytes("UTF8").length);
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
httpConn.connect();
os = httpConn.getOutputStream();
os.write(getParams().getBytes("UTF8"));
try {
os.close();
} catch (Exception e) {
onError(e);
}
response=httpConn.getResponseCode();
đang J2ME:
HttpConnection c = (HttpConnection)XConnection.openConnection(XConnection.SERVER + "AuthenticationServiceForGroup.svc");
c.setRequestProperty("User-Agent", XUtil.getDeviceFullModel() + " " + XUtil.getSoftwareVersion());
c.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
c.setRequestProperty("SOAPAction", "http://tempuri.org/IAuthenticationServiceForGroup/"+conType);
c.setRequestProperty("Software-Version", XApp.VERSION);
c.setRequestMethod(HttpConnection.POST);
OutputStream os = null;
os = c.openOutputStream();
os.write(sParams.getBytes());
try {os.close();} catch (Exception e) {}
if (c.getResponseCode() == HttpConnection.HTTP_OK)
bạn có thể vui lòng thêm mã j2me của bạn quá? –
@yasin tôi đã thêm nó. – atasoyh