HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://my.server:8080/android/service.php");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("action", "getjson"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
Run Code Online (Sandbox Code Playgroud)
service.php生成一个json字符串.我怎么从我的response?顺便说一句,我已经把GSON图书馆搞定了,我可以在其中使用任何方法吗?
类似于这个的解决方案看起来很丑陋,imo:从httpresponse android处理json的最佳方式
有更好的方法,对吧?
任何帮助表示赞赏,谢谢
更新:
String json = EntityUtils.toString(response.getEntity());
Run Code Online (Sandbox Code Playgroud)
似乎可以做到这一点.只有一个小问题:字符串用括号括起来[].我应该手动删除它们吗?它们是由php:s生成的json_encode()
我已经有一个Request子类用于http发送到服务器.问题是,我不知道如何为文件添加参数.将字符串发布到服务器很容易.但我需要将文件添加为不同的参数.我该怎么做?
public class AddNewPetRequest extends Request<JSONObject> {
private Response.Listener<JSONObject> listener;
public AddNewPetRequest(String url, Map<String, String> params,
Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) {
super(Request.Method.GET, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
public AddNewPetRequest(int method, String url, Map<String, String> params,
Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) {
super(method, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return params;
};
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(new …Run Code Online (Sandbox Code Playgroud)