outsource http-request to a new class
I started building an android app (btw I'm totally new to android and not that experienced with Java). I want it to do a GET-Request to a server, get back a json and then do something with that json.
The code below works fine but it's very long and I can imagine that after implementing a few buttons in this activity it's gonna be a real mess
public class secondActivity extends Activity implements OnClickListener {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.login_formular);
View v = findViewById(R.id.button2);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.button2) {
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
final String res= response.body().string();
final Gson gson= new Gson();
final Employee employee=gson.fromJson(res, Employee.class);
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + employee.name);
}
});
}
}
});
}
}
}
My idea was to outsource the code for the http and inside the onclick event calling this function to a new class but it doesn't work.
The Request is working fine but my employee only exists inside onResponse and I have no ide how to return it.
getEmployeeName.java
public class getEmployeeName {
public static String reqName(){
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
String res= response.body().string();
Gson gson= new Gson();
Employee employee=gson.fromJson(res, Employee.class);
}
}
});
return employee;
}
}
secondActivity.java
public void onClick(View v) {
if(v.getId() == R.id.button2) {
String name = getEmployeeName.reqName();
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + name);
}
});
}
}
What I am doing wrong?
Thanks
Amit
java android okhttp
add a comment |
I started building an android app (btw I'm totally new to android and not that experienced with Java). I want it to do a GET-Request to a server, get back a json and then do something with that json.
The code below works fine but it's very long and I can imagine that after implementing a few buttons in this activity it's gonna be a real mess
public class secondActivity extends Activity implements OnClickListener {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.login_formular);
View v = findViewById(R.id.button2);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.button2) {
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
final String res= response.body().string();
final Gson gson= new Gson();
final Employee employee=gson.fromJson(res, Employee.class);
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + employee.name);
}
});
}
}
});
}
}
}
My idea was to outsource the code for the http and inside the onclick event calling this function to a new class but it doesn't work.
The Request is working fine but my employee only exists inside onResponse and I have no ide how to return it.
getEmployeeName.java
public class getEmployeeName {
public static String reqName(){
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
String res= response.body().string();
Gson gson= new Gson();
Employee employee=gson.fromJson(res, Employee.class);
}
}
});
return employee;
}
}
secondActivity.java
public void onClick(View v) {
if(v.getId() == R.id.button2) {
String name = getEmployeeName.reqName();
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + name);
}
});
}
}
What I am doing wrong?
Thanks
Amit
java android okhttp
add a comment |
I started building an android app (btw I'm totally new to android and not that experienced with Java). I want it to do a GET-Request to a server, get back a json and then do something with that json.
The code below works fine but it's very long and I can imagine that after implementing a few buttons in this activity it's gonna be a real mess
public class secondActivity extends Activity implements OnClickListener {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.login_formular);
View v = findViewById(R.id.button2);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.button2) {
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
final String res= response.body().string();
final Gson gson= new Gson();
final Employee employee=gson.fromJson(res, Employee.class);
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + employee.name);
}
});
}
}
});
}
}
}
My idea was to outsource the code for the http and inside the onclick event calling this function to a new class but it doesn't work.
The Request is working fine but my employee only exists inside onResponse and I have no ide how to return it.
getEmployeeName.java
public class getEmployeeName {
public static String reqName(){
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
String res= response.body().string();
Gson gson= new Gson();
Employee employee=gson.fromJson(res, Employee.class);
}
}
});
return employee;
}
}
secondActivity.java
public void onClick(View v) {
if(v.getId() == R.id.button2) {
String name = getEmployeeName.reqName();
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + name);
}
});
}
}
What I am doing wrong?
Thanks
Amit
java android okhttp
I started building an android app (btw I'm totally new to android and not that experienced with Java). I want it to do a GET-Request to a server, get back a json and then do something with that json.
The code below works fine but it's very long and I can imagine that after implementing a few buttons in this activity it's gonna be a real mess
public class secondActivity extends Activity implements OnClickListener {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.login_formular);
View v = findViewById(R.id.button2);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.button2) {
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
final String res= response.body().string();
final Gson gson= new Gson();
final Employee employee=gson.fromJson(res, Employee.class);
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + employee.name);
}
});
}
}
});
}
}
}
My idea was to outsource the code for the http and inside the onclick event calling this function to a new class but it doesn't work.
The Request is working fine but my employee only exists inside onResponse and I have no ide how to return it.
getEmployeeName.java
public class getEmployeeName {
public static String reqName(){
OkHttpClient client = new OkHttpClient();
String url="https://example.com/json";
Request request= new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
String res= response.body().string();
Gson gson= new Gson();
Employee employee=gson.fromJson(res, Employee.class);
}
}
});
return employee;
}
}
secondActivity.java
public void onClick(View v) {
if(v.getId() == R.id.button2) {
String name = getEmployeeName.reqName();
secondActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txt= findViewById(R.id.txt3);
txt.setText("employee: " + name);
}
});
}
}
What I am doing wrong?
Thanks
Amit
java android okhttp
java android okhttp
asked Nov 14 '18 at 16:42
AmitAmit
63
63
add a comment |
add a comment |
0
active
oldest
votes
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%2f53304982%2foutsource-http-request-to-a-new-class%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
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%2f53304982%2foutsource-http-request-to-a-new-class%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