我想通过使用apache httpclient
传递一个具有几个属性的对象数组到一个PHP web服务,但我不知道如何。我试图用JSON
来编码数组和对象。下面的方法创建JSON
对象,然后将它们添加到JSONArray
:通过Apache传递JSONArray httpclient
createArray(){
JSONArray arr = new JSONArray();
}
public void addObj(long var1, int var2, int var3, int var4){
JSONObject obj;
try {
obj = new JSONObject();
obj.put("one:", var1);
obj.put("two:", var2);
obj.put("three:", var3);
obj.put("four:", var4);
arr.put(obj);
} catch (JSONException e) {
e.printStackTrace();
}
}
接下来,我有一个类,我的数据传递给我的web服务:
public class Upload {
private String userID = null;
private String password = null;
private String email = null;
Upload(String userID, String password, String email){
this.userID = userID;
this.password = password;
this.email = email;
}
public void uploadData(JSONArray arr) throws Exception{
//HTTP POST Service
try{
HttpClient httpclient = HttpClientBuilder.create().build();
URI uri = new URIBuilder()
.setScheme("http")
.setHost("www.mysite.com")
.setPath("/mypage.php")
.build();
HttpPost httppost = new HttpPost(uri);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("Email", email));
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();
}
}
}
我想我也许可以简单地通过做通JSONArray
如以前一样的参数:
params.add(new BasicNameValuePair("JsonArray", arr));
但是,这并不工作,因为只添加似乎接受字符串。我该怎么做?
'arr.toString()'。 –
不能编译,arr没有在这个范围内定义 – njzk2
如果我使用arr.toString是否有一个简单的方法将它转换回php一侧,以便我可以像对待数组一样操作它? – db579