服务端PHP代码可以从这里下载:https://github.com/lornajane/PHP-Web-Services

1.使用volley实现:

request要用JsonObjectRequest,这个request在url后面带有一个JSONObject类型的参数

如果服务端有检测http头的请求数据类型和接受数据类型(比如有的服务端会根据http头中的Accept字段标示的类型,返回json,xml或其他数据类型,也会根据Content-type字段的标示,按json或form类型解析请求参数),还需要在getHeaders回调中设置头部参数,如果服务端不检测,可以不设置:

 headers.put("Accept", "application/json");//表示接受json类型的响应
 headers.put("Content-Type", "application/json; charset=UTF-8");//表示传递给服务器的参数是json类型

String strUrl = "http://10.2.152.133/test/rest/rest.php/items";
try {
    JSONObject jsonBody = new JSONObject("{\"name\":\"Brett\",\"link\":\"haha\"}");

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,
            strUrl, jsonBody, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            Log.d("qf", response.toString());
        }
    },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("qf", error.getMessage());
                }
            }

    ) {
        @Override
        public Map<String, String> getHeaders() {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Accept", "application/json");
            headers.put("Content-Type", "application/json; charset=UTF-8");

            return headers;
        }
    };

    MyApp.mRequestQueue.add(request);
} catch (Exception e) {
    e.printStackTrace();
}

2.使用httputils实现:

content-type设置也要根据情况需要,同volley一样

普通的表单请求是addQueryStringParameter(get)或addBodyParameter(post),json请求是setBodyEntity

protected void postJsonByXutils() {
    String strUrl = "http://10.2.152.133/test/rest/rest.php/items";
    RequestParams requestParams = new RequestParams();
    requestParams.addHeader("Content-Type", "applicasettion/json");

    JSONObject json = new JSONObject();

    try {
        json.put("name", "zy");
        json.put("link", "zy2");
    } catch (JSONException e) {
        e.printStackTrace();
    }

    requestParams.setBodyEntity(new StringEntity(json.toString(), "utf-8"));

    MyApp.mHttpUtils.send(HttpRequest.HttpMethod.POST,
            strUrl,requestParams,new RequestCallBack<String>() {
                @Override
                public void onSuccess(ResponseInfo<String> responseInfo) {
                    String strResult = responseInfo.result;
                    Log.d("qf", strResult);
                }

                @Override
                public void onFailure(HttpException error, String msg) {
                    Log.d("qf", msg);
                }
            });
}

3.使用httpurlconnection:

    protected void postJsonByHttpURLConnection() {
        HttpURLConnection httpcon;
        String url = "http://10.2.152.133/test/rest/rest.php/items";
        String data = "{\"name\":\"Brett2\",\"link\":\"haha2\"}";
        String result = null;
        try {
//Connect
            httpcon = (HttpURLConnection) ((new URL(url).openConnection()));
            httpcon.setDoOutput(true);
            httpcon.setRequestProperty("Content-Type", "application/json");
            httpcon.setRequestProperty("Accept", "application/json");
            httpcon.setRequestMethod("POST");
            httpcon.connect();

//Write
            OutputStream os = httpcon.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
            writer.write(data);
            writer.close();
            os.close();

//Read
            BufferedReader br = new BufferedReader(new InputStreamReader(httpcon.getInputStream(), "UTF-8"));

            String line = null;
            StringBuilder sb = new StringBuilder();

            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

            br.close();
            result = sb.toString();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
//http://blog.csdn.net/lamp_zy/article/details/52300629
    }//特别注意一点,在进行接口调用时,会发生乱码 connection.setRequestProperty("ContentType", "utf-8"); // 设置发送数据的格式   connection.setRequestProperty("Accept-Charset", "utf-8"); 

Json格式的http请求的更多相关文章

  1. Loadrunner:LR提交JSON格式的POST请求

    场景: 影视分发:影院客户端向管理平台发起取任务的操作,取任务接口getDispatchTask,为JSON格式的POST请求 Action() { web_custom_request(" ...

  2. requests(一): 发送一个json格式的post请求

    今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...

  3. python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况

    json和dict python中的dict类型要转换为json格式的数据需要用到json库: import json <json> = json.dumps(<dict>) ...

  4. java发送application/json格式的post请求,需要登陆

    package util; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWri ...

  5. java代码发送JSON格式的httpPOST请求

    package com.test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOE ...

  6. postman发送json格式的post请求

    在地址栏里输入请求url:http://127.0.0.1:8081/getmoney 选择“POST”方式, 在“headers”添加key:Content-Type  , value:applic ...

  7. (转)java代码发送JSON格式的httpPOST请求

    import Java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import j ...

  8. SpringCloud中接收application/json格式的post请求参数并转化为实体类

    @CrossOrigin(allowCredentials="true", allowedHeaders="*", methods={RequestMethod ...

  9. RestTemplate发送请求并携带header信息 RestTemplate post json格式带header信息

    原文地址:  http://www.cnblogs.com/hujunzheng/p/6018505.html RestTemplate发送请求并携带header信息   v1.使用restTempl ...

随机推荐

  1. nginx环境下搭建nagios 3.5.0,及配置pnp4nagios画图

    本文基于<LNMP最新源码安装脚本>,Nagios依赖PHP环境和perl环境,由于Nginx不支持Perl的CGI,需先来搭建Perl环境,Nagios原理介绍略.一.下载最新稳定源码包 ...

  2. zepto源码研究 - zepto.js (zepto.init)

    简要:当我们用$()时,便会直接调用zepto.init 生成zepto对象,那zepto.init是如何根据不同类型的参数来生产指定对象呢? zepto.init = function(select ...

  3. 使用Scanner来解析文件

    前面的流是全部流进来再处理,空间换取时间 我们用Scanner来解析文件,先处理再输入数据,时间换取空间 两种方法 Scanner scanner1=new Scanner(file1); for(; ...

  4. Linux(Centos、Debian)之安装Java JDK及注意事项(转)

    --转自:http://www.cnblogs.com/hanyinglong/p/5025635.html 说明:本人是以Debian 操作系统来进行安装的,这篇文章有很大帮助,才学Linux对有些 ...

  5. DotNET知识点总结三(笔记整合)

    使用接口的注意事项: 接口中的成员不能加访问修饰符 接口中的成员不能有任何实现 实现接口的子类必须实现接口的全部成员 一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口 ...

  6. 转:解决方案your project contains error s please fix them before running your application

    文章来自于:http://www.mythroad.net/2013/08/05/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88your-project-contains-e ...

  7. android编程之悬浮窗体

    用过手机360和QQ手机管家等一些软件的朋友,会发现,在这些应用中,会出现一个悬浮窗体,例如QQ手机管家中打电话的场景: 这种窗体除了会显示外,还可以移动它的位置,并且一直显示.除了关闭当前程序外,窗 ...

  8. c#—— Task.FromResult 的使用

    Task.FromResult用来创建一个带返回值的.已完成的Task. 场景一:以同步的方式实现一个异步接口方法 比如有一个接口包含异步方法. interface IMyInterface { Ta ...

  9. 2015.9.11模拟赛 codevs 4159【hzwer的迷の数列】

    题目描述 Description hzwer找了一个人畜无害的迷の数列…… 现在hzwer希望对这个数列进行一些操作,请你来回答hzwer的问题. 操作一:查询第i个数的大小 操作二:把第i个数的大小 ...

  10. Codeforces Round #FF (Div. 2)__E. DZY Loves Fibonacci Numbers (CF447) 线段树

    http://codeforces.com/contest/447/problem/E 题意: 给定一个数组, m次操作, 1 l r 表示区间修改, 每次 a[i] +  Fibonacci[i-l ...