Does OkHttp have something easier similar to Unirest's field method for creating a RequestBody?
up vote
1
down vote
favorite
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 |
up vote
1
down vote
favorite
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 |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
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 at 0:02
Rigo Sarmiento
1218
1218
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
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 |
up vote
0
down vote
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 |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
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 |
up vote
0
down vote
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 |
up vote
0
down vote
up vote
0
down vote
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 at 1:39
Rigo Sarmiento
1218
1218
add a comment |
add a comment |
up vote
0
down vote
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 |
up vote
0
down vote
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 |
up vote
0
down vote
up vote
0
down vote
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 at 1:55
answered Nov 22 at 1:44
Allen Hacks
155
155
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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