2017-03-01 4 views
0

Ich versuche, Daten von Android an den Server zu senden. Es gibt einige String-Werte und ein JSONarray namens "multiples"Wie senden Sie JSONarray an Server in Android mit StringEntity?

Wie ich die Methode nennen

String id = new AddContactRequest().execute(token, etNameS, etLastNameS, etTitleS, etCompanyS, etUrlS, etDescriptionS, txtStatusS, "1", etAddressS, multiplesUpdatedArray.toString()).get(); 

Dies ist meine die Methode

public class AddContact extends AsyncTask<String, Integer, String> { 
     @Override 
     protected String doInBackground(String... params) { 
      String line; 
      line = postData(params[0], params[1], params[2], params[3], params[4], params[5], params[6], params[7], params[8], params[9], params[10]); 

      return line; 

     } 

     protected void onPostExecute(String result){ 
      super.onPostExecute(result); 
     } 

     protected void onProgressUpdate(Integer... progress){ 
      pb.setProgress(progress[0]); 
     } 

     public String postData(String token, String name, String lastname, String title, String company, String url, String description, String status, String campaign, String address, String multiples) { 
     //public String postData(String token, String name, String lastname, String title, String company, String phone, String email, String url, String description, String status, String campaign, String address) { 

      String line2 = null; 

      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://fake.com/api/insert"); 

      try { 
       JSONObject params = new JSONObject(); 
       params.put("token", token); 
       params.put("name", name); 
       params.put("lastname", lastname); 
       params.put("title", title); 
       params.put("company", company); 
       params.put("url", url); 
       params.put("description", description); 
       params.put("address", address); 
       params.put("status", status); 
       params.put("campaign", campaign); 
       params.put("multiples", multiples); 

       httppost.setEntity(new StringEntity(params.toString(), HTTP.UTF_8)); 
       httppost.setHeader("Accept", "application/json"); 
       httppost.setHeader("Content-type", "application/json"); 

       // Execute HTTP Post Request 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity httpEntity = response.getEntity(); 
       line2 = EntityUtils.toString(httpEntity); 

      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 

      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 

      } catch (IOException e) { 
       e.printStackTrace(); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return line2; 

     } 

    } 

Die Antwortdaten zu senden ist ein Fehlercode 500, interner Serverfehler. Ich weiß nicht, was glücklich ist oder was ich falsch mache.

Wenn ich BasicNameValuePair alle Daten verwenden, ist außer meiner "multiples" JSONArray

Bitte helfen geschickt. Danke im Voraus!

+0

1. Die Daten werden auch gesendet, aber es ist eine Zeichenfolge, kein Array. 2. Sie haben eine Antwort vom Server bekommen, aber der Server kann nicht damit umgehen, also schauen Sie sich die Server Seite an (wenn möglich), Fehler 500 kann alles sein. – Fusselchen

Antwort

2

konvertieren JSONArray zu String & senden es an Server

StringEntity entity = new StringEntity(jsonArray.toString());