KJFrameForAndroid的post联网传递的参数有时会为null,怎么办

hjqjl 发布于 2015/08/05 17:08
阅读 507
收藏 0
KJFrameForAndroid的post联网传递的参数有时会为null,但传递null会报错,怎么办?不要每一个地方都判断是不是null
加载中
0
kymjs张涛
kymjs张涛

http请求怎么可能传null呢,没明白你的意思。如果是需要传"null"可以直接传字符串,如果不想传值,可以传空字符串,只是不明白意义何在。

0
h
hjqjl

引用来自“张涛OSC”的评论

http请求怎么可能传null呢,没明白你的意思。如果是需要传"null"可以直接传字符串,如果不想传值,可以传空字符串,只是不明白意义何在。

Android的HttpPost


DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(urlString);
HttpParams params = new BasicHttpParams();//
post.setParams(params);
ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
BasicNameValuePair pair = new BasicNameValuePair("xx", "xxxx");//xxxx为空时,在这里可以传,假设是密码(或许是是别的),服务器会返回密码不能为空
pairList.add(pair);
HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8");
post.setEntity(entity);

HttpResponse response = client.execute(post);


而KJFrameForAndroid


HttpConfig config = new HttpConfig();
KJHttp kjHttp = new KJHttp(config);
HttpParams params = new HttpParams();

params.put("xx", "xxxx");//xxxx为空时,直接报错退出,当xxxx可能某种原因为null时,应该可以传。当然也能判断xxxx是否为空,但影响代码的可读性,写着也麻烦。如果这里能自动判断就好了
kjHttp.post(urlString, params, new HttpCallBack() {
......
});
0
h
hjqjl

最后决定用volley联网了,也有这个问题,改了源码或许有借鉴作用。

闲话:自我感觉volley联网速度是最快的了。

主要是这一句

//加了一层判断
encodedParams.append(URLEncoder.encode(entry.getValue()==null ? "":entry.getValue(), paramsEncoding));


private byte[] encodeParameters(Map<String, String> params, String paramsEncoding) {  
        StringBuilder encodedParams = new StringBuilder();  
        try {  
            for (Map.Entry<String, String> entry : params.entrySet()) {  
                encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding));  
                encodedParams.append('=');  
                //加了一层判断  
                encodedParams.append(URLEncoder.encode(entry.getValue()==null ? "":entry.getValue(), paramsEncoding));  
                encodedParams.append('&');  
            }  
            return encodedParams.toString().getBytes(paramsEncoding);  
        } catch (UnsupportedEncodingException uee) {  
            throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee);  
        }  
    }


返回顶部
顶部