我有一个Https网址,它返回一个像这样的json:
{success:true, success_msg:'Register/Unregister was accomplished successfully',desc:'',redirect:false}
当我想在android中使用HttpURLConnection获取url响应时,它会返回此json:
{success:false, title:'Traffic Authentication Page',fail_msg:'Register/Unregister was failed',desc:''}
这是http utils类。我使用的是doGet(String url)方法
public class HttpUtil {
static {
try {
TrustManager[] trustAllCerts = { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs,
String authType) {
}
public void checkServerTrusted(X509Certificate[] certs,
String authType) {
}
} };
SSLContext sc = SSLContext.getInstance("SSL");
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);
} catch (Exception localException) {
}
}
private static HttpUtil httpUtil;
HttpUtil() {
}
public static HttpUtil getHttpUtil() {
if (httpUtil == null)
httpUtil = new HttpUtil();
return httpUtil;
}
public String doGet(String url) throws Exception {
// configure the SSLContext with a TrustManager
URL urlObj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoOutput(true);
String line;
StringBuffer buffer = new StringBuffer();
BufferedReader reader = null;
try
{
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
} catch(Exception localException) {
}
reader.close();
conn.disconnect();
return buffer.toString();
}
}
当我记录网址时,它似乎是正确的。我通过来自用户的params在asynctask doInBackground中生成url。这个url返回true json但是通过android返回false json发送这个请求。为什么它返回false?请帮帮我。
答案 0 :(得分:0)
Json中的true和false值由0和1设置
并使用Boolean.valueOf("1") => return true
将其转换为实际值
答案 1 :(得分:0)
我的解决方案已经解决。我只是删除了conn.setDoOutput(true);
,因为在GET方法中没有输出流。
这个问题帮助了我:What is the use of HttpURLConnection class's setDoOutput & setDoInput methods