AndroidJSON Array
からt への送信に問題があります。Servle
しかしJSON Array
、ブラウザ経由で同じものを送信できます。この問題を解決するために何時間も費やしましたが、解決策が見つかりません。
URL = "http://192.168.*.*:8080/Test/TestServlet?q=add&array="
最後に JSON 配列を追加しました。
[{"amount":"3","test":"test",...}]
GlassFishサーバー エラー:
org.json.JSONException: A JSONArray text must start with '[' at character 0 of
返信を待っています、ありがとう。
サーブレット:
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
PrintWriter out = response.getWriter();
String req = request.getParameter("q");
try
{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver found");
dbConnect = DriverManager.getConnection("jdbc:mysql://localhost/***",
"root", "***");
dbStatement = dbConnect.createStatement();
if (req.equals("add")) {
String json_array = request.getParameter("array");
String query = null;
org.json.JSONArray jArray = new org.json.JSONArray(json_array);
for (int i = 0; i < jArray.length(); i++)
{
org.json.JSONObject obj = jArray.getJSONObject(i);
query =
"INSERT INTO *** (...) VALUES(" + obj.getInt("***") + ",'" +
obj.getString("***") + "','" + obj.getString("***") + "','" +
obj.getString("***") + "'," + obj.getDouble("***") + "," +
obj.getDouble("***") + "," + obj.getDouble("***") + ",'" +
obj.getString("***") + "','"+obj.getString("***")+"','','"+
obj.getString("***") + "')";
}
dbStatement.executeUpdate(query);
...
アンドロイド
protected void sendJson(JSONArray json)
{
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000);
HttpResponse response;
try
{
HttpPost post = new HttpPost(URL);
StringEntity se = new StringEntity(json.toString());
Log.i("JSON before sending", json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
/*Checking response */
if(response!=null)
{
InputStream in = response.getEntity().getContent();
//Get the data in the entity
}
}
catch(Exception e)
{
e.printStackTrace();
}
}