gpt4 book ai didi

mysql - 如何通过 HttpClient 在 POST 请求中将 JSON 数据作为正文发送

转载 作者:可可西里 更新时间:2023-11-01 07:09:30 25 4
gpt4 key购买 nike

我有一个要求。我有一个有效的 POST 调用 ("http://localhost:8080/POSTAPI/table/testmaster/create")。我通过 postman 发送了 JSON 数据,并将详细信息插入到 MySQL 数据库中。现在我正在尝试通过 apache httpcleint 发送 json 数据。但是,它无法插入 mysql 数据库。

CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost("http://localhost:8080/POSTAPI/table/testmaster/create");
JSONObject testmaster = new JSONObject();
testmaster.put("testRunId", testRunId);
testmaster.put("testClassName", className);
testmaster.put("testMethod", methodName);
testmaster.put("createdBy", "leela");
testmaster.put("createdDate", startDate);
testmaster.put("lastUpdatedBy", "raghu");
testmaster.put("lastUpdatedDate", endDate);
testmaster.put("attribute1", "methodName");
testmaster.put("attribute1Value",methodName );
testmaster.put("attribute2", "result");
testmaster.put("attribute2Value", successResult);
testmaster.put("attribute3", "Test Suite");
testmaster.put("attribute3Value", suiteName);
testmaster.put("attribute4", "test group");
testmaster.put("attribute4Value", TestGroup);
testmaster.put("attribute5", "dataprovider");
testmaster.put("attribute5Value", dataProvider);

StringEntity stringEntity = new StringEntity(testmaster.toString());
post.setEntity(stringEntity);
post.setHeader("Accept", "application/json");
post.setHeader("Content-type", "application/json");
CloseableHttpResponse response = client.execute(post);
System.out.println("Status: "+response.getStatusLine());

这是我试过的。如果有人对通过 httpclient 或任何其他替代方法进行后期操作有任何想法,请告诉我。提前致谢。

最佳答案

使用以下代码:

private class postJsonData extends AsyncTask<Void, Integer, Boolean> {

ProgressDialog dialog;
String responseString = null;

private postJsonData() {
super();
dialog = new ProgressDialog(MainActivity.this);
this.dialog.setTitle("Please wait.");
this.dialog.setCancelable(false);
this.dialog.show();
}

@Override
protected void onPreExecute() {
dialog.setProgress(0);
super.onPreExecute();
}

@Override
protected void onProgressUpdate(Integer... progress) {
// Making progress bar visible
if (this.dialog.isShowing()) {
dialog.setProgress(progress[0]);
}
}

@SuppressWarnings("deprecation")
@Override
protected Boolean doInBackground(Void... params) {
Boolean result=false;

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.2.2/android/jsonpost.php");

try {
JSONObject testmaster = new JSONObject();

try {
testmaster.put("testRunId", "1");
testmaster.put("testClassName", "className");
testmaster.put("testMethod", "methodName");
testmaster.put("createdBy", "leela");
testmaster.put("createdDate", "startDate");
} catch (JSONException e) {
e.printStackTrace();
}

List<NameValuePair> nameValuePairs = new ArrayList<>();
nameValuePairs.add(new BasicNameValuePair("json_string", testmaster.toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

// Making server call
HttpResponse response = httpclient.execute(httppost);
HttpEntity r_entity = response.getEntity();

int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
// Server response
responseString = EntityUtils.toString(r_entity);
result = false;

} else {
responseString = "Error occurred! Http Status Code: "
+ statusCode;
result = false;
}

} catch (final ClientProtocolException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"ClientProtocolException : " + e.toString(),
Toast.LENGTH_LONG)
.show();
}
});
result = false;
} catch (final IOException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"IOException : " + e.toString(),
Toast.LENGTH_LONG)
.show();
}
});
result = false;
}

return result;
}

@Override
protected void onPostExecute(final Boolean success) {
//progressBar.setVisibility(View.GONE);
if (dialog.isShowing()){
dialog.dismiss();
}

runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Response from Server: " + responseString ,
Toast.LENGTH_LONG)
.show();
}
});

if (success){

}else{

}

super.onPostExecute(success);
}

}

这是我的 php 代码,它接受 json 字符串并解码成数组。

<?php

if (empty($_POST['json_string'])) {
echo "Empty json data";
exit;
}else{
$json_string = $_POST['json_string'];
}

$params = array();
$params = json_decode($json_string,true);
//echo $params['testClassName'];

var_dump($params);
?>

关于mysql - 如何通过 HttpClient 在 POST 请求中将 JSON 数据作为正文发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38131786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com