Java 在android中,如何在不使用字符串缓冲区读取行的情况下将其读入字符串 公共类HttpPosrHitter{ 公共静态字符串getJSONfromURL(字符串url、字符串成员id、, 字符串(电话号码){ InputStream=null; 字符串结果=”; JSONObject jArray=null; 试一试{ HttpClient HttpClient=新的DefaultHttpClient(); HttpPost HttpPost=新的HttpPost(url); 列表对=新的ArrayList(); 添加(新的BasicNameValuePair(“memberid”,member_id)); 添加(新的BasicNameValuePair(“数字”,phonenumber)); setEntity(新的UrlEncodedFormEntity(对)); //http post HttpResponse response=httpclient.execute(httppost); HttpEntity=response.getEntity(); is=entity.getContent(); }捕获(例外e){ e(“Log_标记”,“http连接错误”+e.toString()); } //将响应转换为字符串 试一试{ BufferedReader reader=新的BufferedReader(新的InputStreamReader( 为“UTF-8”)、8); StringBuilder sb=新的StringBuilder(); 字符串行=”; 而((line=reader.readLine())!=null){ sb.追加(第+行“\n”); } is.close(); 结果=sb.toString(); }捕获(例外e){ Log.e(“Log_标记”,“错误转换结果”+e.toString()); } 试一试{ jArray=新的JSONObject(结果); }捕获(JSONException e){ Log.e(“Log_标记”,“错误解析数据”+e.toString()); } 返回结果; } }

Java 在android中,如何在不使用字符串缓冲区读取行的情况下将其读入字符串 公共类HttpPosrHitter{ 公共静态字符串getJSONfromURL(字符串url、字符串成员id、, 字符串(电话号码){ InputStream=null; 字符串结果=”; JSONObject jArray=null; 试一试{ HttpClient HttpClient=新的DefaultHttpClient(); HttpPost HttpPost=新的HttpPost(url); 列表对=新的ArrayList(); 添加(新的BasicNameValuePair(“memberid”,member_id)); 添加(新的BasicNameValuePair(“数字”,phonenumber)); setEntity(新的UrlEncodedFormEntity(对)); //http post HttpResponse response=httpclient.execute(httppost); HttpEntity=response.getEntity(); is=entity.getContent(); }捕获(例外e){ e(“Log_标记”,“http连接错误”+e.toString()); } //将响应转换为字符串 试一试{ BufferedReader reader=新的BufferedReader(新的InputStreamReader( 为“UTF-8”)、8); StringBuilder sb=新的StringBuilder(); 字符串行=”; 而((line=reader.readLine())!=null){ sb.追加(第+行“\n”); } is.close(); 结果=sb.toString(); }捕获(例外e){ Log.e(“Log_标记”,“错误转换结果”+e.toString()); } 试一试{ jArray=新的JSONObject(结果); }捕获(JSONException e){ Log.e(“Log_标记”,“错误解析数据”+e.toString()); } 返回结果; } },java,android,Java,Android,这是一节课,我在课上把电话号码贴到网络服务上并得到回复。 当我发布了有15到20个联系人的电话号码时,我得到了回复。但当我发布了一个有150个联系人的号码时,我一次只能收到一个回复,我必须重新启动应用程序两次,然后才能收到回复。我不知道我在哪里犯了错误。即使是我也无法用固定大小的缓冲区读取手机大文件 公共类HttpPosrHitter{ public class HttpPosrHitter { public static String getJSONfromURL(String ur

这是一节课,我在课上把电话号码贴到网络服务上并得到回复。 当我发布了有15到20个联系人的电话号码时,我得到了回复。但当我发布了一个有150个联系人的号码时,我一次只能收到一个回复,我必须重新启动应用程序两次,然后才能收到回复。我不知道我在哪里犯了错误。即使是我也无法用固定大小的缓冲区读取手机大文件

公共类HttpPosrHitter{
public class HttpPosrHitter {

    public static String getJSONfromURL(String url, String member_id,
            String phonenumber) {
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            List<NameValuePair> pairs = new ArrayList<NameValuePair>();
            pairs.add(new BasicNameValuePair("memberid", member_id));
            pairs.add(new BasicNameValuePair("numbers", phonenumber));
            httppost.setEntity(new UrlEncodedFormEntity(pairs));

            // http post

            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }

        // convert response to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = "";
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        try {

            jArray = new JSONObject(result);
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }

        return result;
    }
}
公共静态字符串getJSONfromURL(字符串url、字符串成员id、, 字符串(电话号码){ InputStream=null; 字符串结果=”; JSONObject jArray=null; 试一试{ HttpClient HttpClient=新的DefaultHttpClient(); HttpPost HttpPost=新的HttpPost(url); 列表对=新的ArrayList(); 添加(新的BasicNameValuePair(“memberid”,member_id)); 添加(新的BasicNameValuePair(“数字”,phonenumber)); setEntity(新的UrlEncodedFormEntity(对)); //http post HttpResponse response=httpclient.execute(httppost); HttpEntity=response.getEntity(); result=EntityUtils.toString(entity);//所做的更改 }捕获(例外e){ e(“Log_标记”,“http连接错误”+e.toString()); } 试一试{ jArray=新的JSONObject(结果); }捕获(JSONException e){ Log.e(“Log_标记”,“错误解析数据”+e.toString()); } 返回结果; } }
只需一次解决所有潜在的bug:是否有任何东西阻止您使用and或or


每次我看到这样的JSON/InputStream/URLConnection/。。。问题是,我一直想知道为什么人们总是花时间重新发明基本的东西,而不是实际编写应用程序。

你应该只发布一次数据,因为你必须更改你的web服务(web API)只需对成员id和numer做一个jsonarray,只发布一次就可以得到响应。对于15个数字,我得到响应,但当输入的数字大于150时,响应就不来了,我不知道为什么?我们无法更改web服务,但多次发出http请求并不好。我知道,但我的问题是多次未发出请求。我的问题与我的编号不同,我的编号为15,20个联系电话号码我一次收到一个回复,但问题来了,当我发布大的输入150个APPXO电话号码时,我没有收到回复,但您发出了150个请求。一次,因此您没有得到正确的响应。不,它现在不起作用。请使用我的代码HttpEntity entity=response.getEntity()更新它;is=EntityUtils.toString(实体);我正在尝试这一点,但您是否可以添加您的web服务代码,以便更好地了解问题?我将为您提供web服务。还有,如何使用GSON发布或获取?请先阅读改装文档(这是用于get/Post的)。然后,您可以阅读关于GSON(用于解析json)的内容。
        public class HttpPosrHitter {

        public static String getJSONfromURL(String url, String member_id,
                String phonenumber) {
            InputStream is = null;
            String result = "";
            JSONObject jArray = null;
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url);
                List<NameValuePair> pairs = new ArrayList<NameValuePair>();
                pairs.add(new BasicNameValuePair("memberid", member_id));
                pairs.add(new BasicNameValuePair("numbers", phonenumber));
                httppost.setEntity(new UrlEncodedFormEntity(pairs));

                // http post

                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                result = EntityUtils.toString(entity); //changes Made

            } catch (Exception e) {
                Log.e("log_tag", "Error in http connection " + e.toString());
            }



            try {

                jArray = new JSONObject(result);
            } catch (JSONException e) {
                Log.e("log_tag", "Error parsing data " + e.toString());
            }

            return result;
        }
    }