通过Apache HTTPClient将对象的arraylist从Java传递到PHP

时间:2014-01-12 07:08:15

标签: java php arraylist apache-httpclient-4.x

我有一个java程序,通过apache httpclient将数据传递给php webservice。目前传递的只是用户身份验证详细信息和字符串变量。这些在PHP方面得到了很好的接收和处理。我还想以一种可以从PHP读取对象属性的方式传递对象的ArrayList。有没有办法直接以我传递参数的方式执行此操作,还是需要使用JSON对象或其他东西?包含的对象有4个属性,而不仅仅是名称值对。

我的Java代码如下:

    public void upload(ArrayList<MyObject> myList) throws Exception{

    //HTTP POST Service
    try{
        HttpClient httpclient = HttpClientBuilder.create().build();         
        URI uri = new URIBuilder()
        .setScheme("http")
        .setHost("www.mysite.com")
        .setPath("/webservice.php")
        .build();

        HttpPost httppost = new HttpPost(uri);
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("var1", var1));

        String encoding = new String(
                 org.apache.commons.codec.binary.Base64.encodeBase64   
                    (org.apache.commons.codec.binary.StringUtils.getBytesUtf8(userID + ":" + password))
                  );
        httppost.setHeader("Authorization", "Basic " + encoding);
        httppost.setEntity(new UrlEncodedFormEntity(params));
        HttpResponse response = httpclient.execute(httppost);

        System.out.println(response);
        HttpEntity httpEntity = response.getEntity();
        String str = "";
        if (httpEntity != null) {
            str = EntityUtils.toString(httpEntity);
            System.out.println(str);
        }
    }catch (Exception e) {
        e.printStackTrace();
    }
}

编辑:

我的用例基本上是我想更新服务器上的MySQL数据库表,我的java对象的每个属性都是一个字段的值(即一个对象=一个表行)。所以我希望能够传递我的ArrayList,这样我就可以一次性将多行添加到我的数据库表中。

EDIT2。好的,我现在有以下方法来构造我的JSONArray,其中传递的变量以前是我的对象的属性。 JSON对象现在是以前的对象,而jsonArray以前就是我的ArrayList。它是否正确?如何从我的httpclient发布它?

     public void constructJSON(long var1, int var2, int var3, int var4){

    JSONObject obj;
            JSONArray jsonArray = new JSONArray();

    try {
        obj = new JSONObject();
                    obj.put("var1:", var1);
        obj.put("var2:", var2);
        obj.put("var3:", var3);
        obj.put("var4:", var4);
        jsonArray.put(obj);
    } catch (JSONException e) {
        e.printStackTrace();
    }
 }

0 个答案:

没有答案