少し問題があります。すべての連絡先を電話からサーバーに送信する必要があります。このコードは、20または40の連絡先でJSONObjectを送信すると機能しますが、400の連絡先を送信するとこのエラーが返されます
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Size of a request header field exceeds server limit.<br />
<pre>
json
</pre>/n</p>
<hr>
<address>Apache Server at default Port 80</address>
</body></html>
これがコードの動作です
public String postData(String url,JSONObject obj) {
// Create a new HttpClient and Post Header
HttpParams myParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(myParams, 10000);
HttpConnectionParams.setSoTimeout(myParams, 10000);
HttpClient httpclient = new DefaultHttpClient(myParams);
String json=obj.toString();
try {
HttpPost httppost = new HttpPost(url.toString());
httppost.setHeader("json", obj.toString());
StringEntity se = new StringEntity(obj.toString());
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httppost.setEntity(se);
HttpResponse response = httpclient.execute(httppost);
String temp = EntityUtils.toString(response.getEntity());
Log.i("post_data2 - popolo", temp);
return temp;
}
ご回答ありがとうございます
/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * **
私は自分自身を解決しました。それが誰かに役立つことを願っています。私はこれのために関数postDataを変更しました。
public void postinsert(String url,String unico_id) {
try{
unico_id = URLEncoder.encode("unique_id", "UTF-8") + "=" + URLEncoder.encode(unico_id, "UTF-8");
URL url1 =new URL(url);
URLConnection con = (URLConnection) url1.openConnection();
con.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(unico_id);
wr.flush();
BufferedReader recv = new BufferedReader(new InputStreamReader(con.getInputStream()));
//Los mostramos por pantalla
s = recv.readLine();
while(s!=null){
System.out.println(s);
s=recv.readLine();
}
}catch (Exception e){
System.out.println(e.getMessage());
}
}