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