1

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();
    }
 }
4

2 に答える 2

0

ブラウザではGETメソッドを試していますが、コードではPOSTメソッドを使用しています。コードで GET メソッドを使用してみてください。以下は、使用する GET メソッドの例です。HttpClient

GetMethod get = new GetMethod("http://www.example.com/page");
method.setQueryString(new NameValuePair[] {
    new NameValuePair("q", "add"),
  new NameValuePair("array", "[{"amount":"3","test":"test"}]"),
});

次にclient.execute(post);、サーバーを呼び出すために使用します。

于 2012-08-21T08:04:20.367 に答える