Java HttpUrlConnectionPost问题
好的,当我在浏览器上尝试这一点时,我能够将参数插入到表people中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
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谢谢代码示例,但我不能只是复制并粘贴到我的应用程序中