Does OkHttp have something easier similar to Unirest's field method for creating a RequestBody?
Instead of Unirest
, I'm using okhttp because there are responses where I only need the header so I don't need to download it using its ResponseBody.string()
method.
I am however having a hard time building my requests for POSTs
with a RequestBody
. In Unirest, you only need to use the
fieldmethod to add to the its
RequestBody`:
Unirest.post(baseUrl + "/api/user")
.header("Authorization", token)
.field("id", id)
.field("property", property)
.asJson();
But in OkHttp
, if I want to add a RequestBody
I have to do this (in most cases where I don't really have a json
lying around):
OkHttpClient httpClient = new OkHttpClient();
Map<String, Object> payload = new HashMap<>();
payload.put("user_id", userId);
payload.put("client_id", clientId);
payload.put("type", status.getStatus());
payload.put("description", "");
payload.put("duration", 0);
String requestBody = new ObjectMapper().writeValueAsString(payload);
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(RequestBody.create(MediaType.get("application/json"), requestBody))
.build()
);
I'm using a Map
to create a json
string because this is the easiest way for me to create a json
.
Does OkHttp
have something easier similar to Unirest
's field
method for creating a RequestBody?
java okhttp unirest
add a comment |
Instead of Unirest
, I'm using okhttp because there are responses where I only need the header so I don't need to download it using its ResponseBody.string()
method.
I am however having a hard time building my requests for POSTs
with a RequestBody
. In Unirest, you only need to use the
fieldmethod to add to the its
RequestBody`:
Unirest.post(baseUrl + "/api/user")
.header("Authorization", token)
.field("id", id)
.field("property", property)
.asJson();
But in OkHttp
, if I want to add a RequestBody
I have to do this (in most cases where I don't really have a json
lying around):
OkHttpClient httpClient = new OkHttpClient();
Map<String, Object> payload = new HashMap<>();
payload.put("user_id", userId);
payload.put("client_id", clientId);
payload.put("type", status.getStatus());
payload.put("description", "");
payload.put("duration", 0);
String requestBody = new ObjectMapper().writeValueAsString(payload);
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(RequestBody.create(MediaType.get("application/json"), requestBody))
.build()
);
I'm using a Map
to create a json
string because this is the easiest way for me to create a json
.
Does OkHttp
have something easier similar to Unirest
's field
method for creating a RequestBody?
java okhttp unirest
add a comment |
Instead of Unirest
, I'm using okhttp because there are responses where I only need the header so I don't need to download it using its ResponseBody.string()
method.
I am however having a hard time building my requests for POSTs
with a RequestBody
. In Unirest, you only need to use the
fieldmethod to add to the its
RequestBody`:
Unirest.post(baseUrl + "/api/user")
.header("Authorization", token)
.field("id", id)
.field("property", property)
.asJson();
But in OkHttp
, if I want to add a RequestBody
I have to do this (in most cases where I don't really have a json
lying around):
OkHttpClient httpClient = new OkHttpClient();
Map<String, Object> payload = new HashMap<>();
payload.put("user_id", userId);
payload.put("client_id", clientId);
payload.put("type", status.getStatus());
payload.put("description", "");
payload.put("duration", 0);
String requestBody = new ObjectMapper().writeValueAsString(payload);
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(RequestBody.create(MediaType.get("application/json"), requestBody))
.build()
);
I'm using a Map
to create a json
string because this is the easiest way for me to create a json
.
Does OkHttp
have something easier similar to Unirest
's field
method for creating a RequestBody?
java okhttp unirest
Instead of Unirest
, I'm using okhttp because there are responses where I only need the header so I don't need to download it using its ResponseBody.string()
method.
I am however having a hard time building my requests for POSTs
with a RequestBody
. In Unirest, you only need to use the
fieldmethod to add to the its
RequestBody`:
Unirest.post(baseUrl + "/api/user")
.header("Authorization", token)
.field("id", id)
.field("property", property)
.asJson();
But in OkHttp
, if I want to add a RequestBody
I have to do this (in most cases where I don't really have a json
lying around):
OkHttpClient httpClient = new OkHttpClient();
Map<String, Object> payload = new HashMap<>();
payload.put("user_id", userId);
payload.put("client_id", clientId);
payload.put("type", status.getStatus());
payload.put("description", "");
payload.put("duration", 0);
String requestBody = new ObjectMapper().writeValueAsString(payload);
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(RequestBody.create(MediaType.get("application/json"), requestBody))
.build()
);
I'm using a Map
to create a json
string because this is the easiest way for me to create a json
.
Does OkHttp
have something easier similar to Unirest
's field
method for creating a RequestBody?
java okhttp unirest
java okhttp unirest
asked Nov 22 '18 at 0:02
Rigo SarmientoRigo Sarmiento
14710
14710
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
I found okhttp
has FormBody
which has a Builder
:
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(new FormBody.Builder()
// TODO user getId()
.add("id","")
.add("custom_fields", field)
.build())
.build()
);
add a comment |
OkHttp doesn't have asJson. You can add a custom interceptor or implement a separate JSONObject.
Build JSON using JSONObject:
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("username", "yourEmail@com");
jsonObject.put("password", "yourPassword");
jsonObject.put("anyKey", "anyValue");
} catch (JSONException e) {
e.printStackTrace();
}
Then call OkHttp like this:
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
The authors of okhttp use strings: https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/guide/PostExample.java
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422134%2fdoes-okhttp-have-something-easier-similar-to-unirests-field-method-for-creating%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I found okhttp
has FormBody
which has a Builder
:
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(new FormBody.Builder()
// TODO user getId()
.add("id","")
.add("custom_fields", field)
.build())
.build()
);
add a comment |
I found okhttp
has FormBody
which has a Builder
:
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(new FormBody.Builder()
// TODO user getId()
.add("id","")
.add("custom_fields", field)
.build())
.build()
);
add a comment |
I found okhttp
has FormBody
which has a Builder
:
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(new FormBody.Builder()
// TODO user getId()
.add("id","")
.add("custom_fields", field)
.build())
.build()
);
I found okhttp
has FormBody
which has a Builder
:
Call call = httpClient.newCall(
new Request.Builder()
.url(url)
.header("Authorization", tempToken)
.post(new FormBody.Builder()
// TODO user getId()
.add("id","")
.add("custom_fields", field)
.build())
.build()
);
answered Nov 22 '18 at 1:39
Rigo SarmientoRigo Sarmiento
14710
14710
add a comment |
add a comment |
OkHttp doesn't have asJson. You can add a custom interceptor or implement a separate JSONObject.
Build JSON using JSONObject:
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("username", "yourEmail@com");
jsonObject.put("password", "yourPassword");
jsonObject.put("anyKey", "anyValue");
} catch (JSONException e) {
e.printStackTrace();
}
Then call OkHttp like this:
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
The authors of okhttp use strings: https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/guide/PostExample.java
add a comment |
OkHttp doesn't have asJson. You can add a custom interceptor or implement a separate JSONObject.
Build JSON using JSONObject:
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("username", "yourEmail@com");
jsonObject.put("password", "yourPassword");
jsonObject.put("anyKey", "anyValue");
} catch (JSONException e) {
e.printStackTrace();
}
Then call OkHttp like this:
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
The authors of okhttp use strings: https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/guide/PostExample.java
add a comment |
OkHttp doesn't have asJson. You can add a custom interceptor or implement a separate JSONObject.
Build JSON using JSONObject:
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("username", "yourEmail@com");
jsonObject.put("password", "yourPassword");
jsonObject.put("anyKey", "anyValue");
} catch (JSONException e) {
e.printStackTrace();
}
Then call OkHttp like this:
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
The authors of okhttp use strings: https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/guide/PostExample.java
OkHttp doesn't have asJson. You can add a custom interceptor or implement a separate JSONObject.
Build JSON using JSONObject:
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("username", "yourEmail@com");
jsonObject.put("password", "yourPassword");
jsonObject.put("anyKey", "anyValue");
} catch (JSONException e) {
e.printStackTrace();
}
Then call OkHttp like this:
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
The authors of okhttp use strings: https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/guide/PostExample.java
edited Nov 22 '18 at 1:55
answered Nov 22 '18 at 1:44
Allen HacksAllen Hacks
175
175
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422134%2fdoes-okhttp-have-something-easier-similar-to-unirests-field-method-for-creating%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown