जवाबों:
यहाँ है आपको क्या करने की जरूरत है:
कोड लगभग जैसा दिखता है (आपको अभी भी इसे डीबग करना होगा और इसे काम करना होगा)
//Deprecated
//HttpClient httpClient = new DefaultHttpClient();
HttpClient httpClient = HttpClientBuilder.create().build(); //Use this instead
try {
HttpPost request = new HttpPost("http://yoururl");
StringEntity params =new StringEntity("details={\"name\":\"myname\",\"age\":\"20\"} ");
request.addHeader("content-type", "application/x-www-form-urlencoded");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
//handle response here...
}catch (Exception ex) {
//handle exception here
} finally {
//Deprecated
//httpClient.getConnectionManager().shutdown();
}
आप अपने जावा क्लासेस को JSON ऑब्जेक्ट्स में बदलने के लिए Gson लाइब्रेरी का उपयोग कर सकते हैं।
उन उदाहरणों के लिए एक पॉज़ो क्लास बनाएँ, जिन्हें आप उदाहरण के अनुसार भेजना चाहते हैं
{"name":"myname","age":"20"}
हो जाता है
class pojo1
{
String name;
String age;
//generate setter and getters
}
एक बार जब आप pojo1 वर्ग में चर सेट करते हैं तो आप निम्न कोड का उपयोग करके भेज सकते हैं
String postUrl = "www.site.com";// put in your url
Gson gson = new Gson();
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(postUrl);
StringEntity postingString = new StringEntity(gson.toJson(pojo1));//gson.tojson() converts your pojo to json
post.setEntity(postingString);
post.setHeader("Content-type", "application/json");
HttpResponse response = httpClient.execute(post);
और ये आयात हैं
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
और GSON के लिए
import com.google.gson.Gson;
@ Apache HttpClient के लिए मोमो का जवाब, संस्करण 4.3.1 या बाद का संस्करण। मैं JSON-Java
अपना JSON ऑब्जेक्ट बनाने के लिए उपयोग कर रहा हूं :
JSONObject json = new JSONObject();
json.put("someKey", "someValue");
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
try {
HttpPost request = new HttpPost("http://yoururl");
StringEntity params = new StringEntity(json.toString());
request.addHeader("content-type", "application/json");
request.setEntity(params);
httpClient.execute(request);
// handle response here...
} catch (Exception ex) {
// handle exception here
} finally {
httpClient.close();
}
HttpURLConnection का उपयोग करना शायद सबसे आसान है ।
http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139
आप JSONObject या अपने JSON का निर्माण करने के लिए जो भी उपयोग करेंगे, लेकिन नेटवर्क को संभालने के लिए नहीं; आपको इसे क्रमबद्ध करना होगा और फिर इसे HttpURLConnection से POST में पास करना होगा।
j.toString()
।
protected void sendJson(final String play, final String prop) {
Thread t = new Thread() {
public void run() {
Looper.prepare(); //For Preparing Message Pool for the childThread
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 1000); //Timeout Limit
HttpResponse response;
JSONObject json = new JSONObject();
try {
HttpPost post = new HttpPost("http://192.168.0.44:80");
json.put("play", play);
json.put("Properties", prop);
StringEntity se = new StringEntity(json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
/*Checking response */
if (response != null) {
InputStream in = response.getEntity().getContent(); //Get the data in the entity
}
} catch (Exception e) {
e.printStackTrace();
showMessage("Error", "Cannot Estabilish Connection");
}
Looper.loop(); //Loop in the message queue
}
};
t.start();
}
इस कोड को आज़माएं:
HttpClient httpClient = new DefaultHttpClient();
try {
HttpPost request = new HttpPost("http://yoururl");
StringEntity params =new StringEntity("details={\"name\":\"myname\",\"age\":\"20\"} ");
request.addHeader("content-type", "application/json");
request.addHeader("Accept","application/json");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
// handle response here...
}catch (Exception ex) {
// handle exception here
} finally {
httpClient.getConnectionManager().shutdown();
}
application/json
दोनों को हेडर के रूप में और सामग्री-प्रकार के रूप में क्यों भेजते हैं
DefaultHttpClient
पदावनत कर दिया गया है।
मुझे यह प्रश्न मिला कि java ग्राहक से Google समापन बिंदुओं पर पोस्ट अनुरोध कैसे भेजें, इसका समाधान खोज रहा हूं। उपरोक्त उत्तर, बहुत सही होने की संभावना है, लेकिन Google समापन बिंदु के मामले में काम नहीं करते हैं।
Google समापन बिंदु के लिए समाधान।
सामग्री प्रकार हेडर को "एप्लिकेशन / जसन" पर सेट किया जाना चाहिए।
post("http://localhost:8888/_ah/api/langapi/v1/createLanguage",
"{\"language\":\"russian\", \"description\":\"dsfsdfsdfsdfsd\"}");
public static void post(String url, String json ) throws Exception{
String charset = "UTF-8";
URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true); // Triggers POST.
connection.setRequestProperty("Accept-Charset", charset);
connection.setRequestProperty("Content-Type", "application/json;charset=" + charset);
try (OutputStream output = connection.getOutputStream()) {
output.write(json.getBytes(charset));
}
InputStream response = connection.getInputStream();
}
यह सुनिश्चित करें कि HttpClient का उपयोग करके भी किया जा सकता है।
आप Apache HTTP के साथ निम्न कोड का उपयोग कर सकते हैं:
String payload = "{\"name\": \"myname\", \"age\": \"20\"}";
post.setEntity(new StringEntity(payload, ContentType.APPLICATION_JSON));
response = client.execute(request);
इसके अतिरिक्त आप एक json ऑब्जेक्ट बना सकते हैं और इस तरह ऑब्जेक्ट में फ़ील्ड्स में डाल सकते हैं
HttpPost post = new HttpPost(URL);
JSONObject payload = new JSONObject();
payload.put("name", "myName");
payload.put("age", "20");
post.setEntity(new StringEntity(payload.toString(), ContentType.APPLICATION_JSON));
जावा 11 के लिए आप नए HTTP क्लाइंट का उपयोग कर सकते हैं :
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost/api"))
.header("Content-Type", "application/json")
.POST(ofInputStream(() -> getClass().getResourceAsStream(
"/some-data.json")))
.build();
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
आप InputStream, String, File से प्रकाशक का उपयोग कर सकते हैं। जैकसन को स्ट्रिंग या आईएस में परिवर्तित करना आप जैक्सन के साथ कर सकते हैं।
Apache httpClient 4 के साथ जावा 8
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost("www.site.com");
String json = "details={\"name\":\"myname\",\"age\":\"20\"} ";
try {
StringEntity entity = new StringEntity(json);
httpPost.setEntity(entity);
// set your POST request headers to accept json contents
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
try {
// your closeablehttp response
CloseableHttpResponse response = client.execute(httpPost);
// print your status code from the response
System.out.println(response.getStatusLine().getStatusCode());
// take the response body as a json formatted string
String responseJSON = EntityUtils.toString(response.getEntity());
// convert/parse the json formatted string to a json object
JSONObject jobj = new JSONObject(responseJSON);
//print your response body that formatted into json
System.out.println(jobj);
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
मैं अपाचे http एपीआई पर निर्मित http-request का पुन: दावा करता हूं ।
HttpRequest<String> httpRequest = HttpRequestBuilder.createPost(yourUri, String.class)
.responseDeserializer(ResponseDeserializer.ignorableDeserializer()).build();
public void send(){
ResponseHandler<String> responseHandler = httpRequest.execute("details", yourJsonData);
int statusCode = responseHandler.getStatusCode();
String responseContent = responseHandler.orElse(null); // returns Content from response. If content isn't present returns null.
}
यदि आप JSON
अनुरोध बॉडी के रूप में भेज सकते हैं तो आप निम्न कार्य कर सकते हैं:
ResponseHandler<String> responseHandler = httpRequest.executeWithBody(yourJsonData);
मैं उपयोग करने से पहले पढ़े गए दस्तावेज़ों को फिर से पढ़ता हूं।