Java HttpUrlConnectionPost问题

Java HttpUrlConnectionPost问题,java,android,httpurlconnection,Java,Android,Httpurlconnection,好的,当我在浏览器上尝试这一点时,我能够将参数插入到表people中 http://example.com/webservice/?value=[{ "table": "people", "operation": "insert", "params": [ { "age": 8, "name": "john", "last_name": "johnson" } ], "transactionComp

好的,当我在浏览器上尝试这一点时,我能够将参数插入到表people中

http://example.com/webservice/?value=[{
  "table": "people",
  "operation": "insert",
  "params": [
    {
      "age": 8,         
      "name": "john",
      "last_name": "johnson"    
    }
  ],
  "transactionCompleted": true
}]
我的问题是如何使用Java实现这一点,以及将transactionCompleted的布尔值放在哪里

 public  void main(String[] args) throws Exception {


   int age = 30;
   String name = "john";
   String lastName = "johnson";
        URL url = new URL("http://www.example.com/webservice/?value=[{\"table\":\"people\",\"operation\":\"insert\"}]");

    Map<String,Object> params = new LinkedHashMap<>();
    params.put("age", age);
    params.put("name", name);
    params.put("last_name", lastName);

    StringBuilder postData = new StringBuilder();
    for (Map.Entry<String,Object> param : params.entrySet()) {
        if (postData.length() != 0) postData.append(',');
        postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
        postData.append('=');
        postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
    }
    byte[] postDataBytes = postData.toString().getBytes("UTF-8");

    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
    conn.setDoOutput(true);
    conn.getOutputStream().write(postDataBytes);

    Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
    for ( int c = in.read(); c != -1; c = in.read() )
        System.out.print((char)c);
}
public void main(字符串[]args)引发异常{
年龄=30岁;
字符串name=“john”;
字符串lastName=“johnson”;
URL=新URL(“http://www.example.com/webservice/?value=[{\'table\':\'people\',\'operation\':\'insert\'}]”;
Map params=新建LinkedHashMap();
参数put(“年龄”,年龄);
参数put(“名称”,名称);
参数put(“姓氏”,姓氏);
StringBuilder postData=新建StringBuilder();
对于(Map.Entry参数:params.entrySet()){
如果(postData.length()!=0)postData.append(',');
append(URLEncoder.encode(param.getKey(),“UTF-8”);
postData.append('=');
append(URLEncoder.encode(String.valueOf(param.getValue()),“UTF-8”);
}
字节[]postDataBytes=postData.toString().getBytes(“UTF-8”);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod(“POST”);
conn.setRequestProperty(“内容类型”、“应用程序/x-www-form-urlencoded”);
conn.setRequestProperty(“内容长度”,String.valueOf(postDataBytes.Length));
连接设置输出(真);
conn.getOutputStream().write(postDataBytes);
Reader in=新的BufferedReader(新的InputStreamReader(conn.getInputStream(),“UTF-8”);
for(int c=in.read();c!=-1;c=in.read())
系统输出打印((字符)c);
}
如果我想在安卓系统中实现这一点,需要改变什么。

试试这段代码

HttpURLConnection urlConnection = null;

    try {
        // create connection
        URL urlToRequest = new URL(serviceUrl);
        urlConnection = (HttpURLConnection) urlToRequest
                .openConnection();

        urlConnection.setRequestProperty("Cookie", cookie);

        switch (headerType) {
            case 1:
                urlConnection.setRequestProperty("Accept",
                        "application/json;odata=verbose");

                break;

            default:
                urlConnection.setRequestMethod("POST");
                urlConnection.setDoInput(true);
                urlConnection.setDoOutput(true);


                String inputdata = "";
                if (properties != null) {
                    inputdata = properties.getProperty(Constant.ID);
                }


                urlConnection.setRequestProperty("Accept",
                        "application/json;odata=verbose");

                urlConnection.setRequestProperty("Content-Length",
                        Integer.toString(inputdata.getBytes().length));

                urlConnection.setRequestProperty("Content-Type",
                        "application/json;odata=verbose");
                urlConnection.setRequestProperty("Auth-Token", "e1cb16d0-751c-4485-ad83-b69e848fcdf3");
                urlConnection.addRequestProperty("Authorization", "Bearer " + cookie);

                DataOutputStream dataOutputStream = new DataOutputStream(
                        urlConnection.getOutputStream());
                dataOutputStream.writeBytes(inputdata);
                dataOutputStream.flush();
                dataOutputStream.close();

                break;
        }

        urlConnection.setConnectTimeout(30000);
        urlConnection.setReadTimeout(100000);
        // handle issues
        statusCode = urlConnection.getResponseCode();
        if (statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
            Log.d("URL Data ", "HTTP_UNAUTHORIZED");
        } else if (statusCode != HttpURLConnection.HTTP_OK) {
            Log.d("URL Data ", "HTTP_NOTOK " + statusCode);
        }

        // create JSON object from content
        InputStream in = new BufferedInputStream(
                urlConnection.getInputStream());
        data = getResponseText(in);
       }
为get和post方法工作。 您只需为输入数据创建一个json对象,并将其写入属性对象,如下所示-

JSONObject obj = new JSONObject();
obj.put("UserId","Deepak");
Property p = new Property();
p.put(Constant.ID,obj.toString();

呃,不要将JSON放在查询字符串中。我在GET时使用了它,它工作正常。当然,它可以工作正常,但很难看。我在哪里添加参数?关于
“transactionCompleted”:url中的true
部分?JSONObj params=new JSONObj();参数put(“年龄”,8);参数put(“名称”、“约翰”);参数put(“姓氏”、“约翰逊”);JSONArray paramArr=新的JSONArray();paramArr.put(params);JSONObj=newjsonobj();对象放置(“桌子”、“人”);实物交付(“操作”、“插入”);对象put(“params”,paramArr.toString());obj.put(“交易完成”,真);JSONArray finalArr=新的JSONArray();最终投入(obj);属性p=新属性();p、 put(Constant.ID,finalArr.toString());按照上面的注释,创建输入数据的json谢谢代码示例,但我不能只是复制并粘贴到我的应用程序中