outsource http-request to a new class












0















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










share|improve this question



























    0















    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










    share|improve this question

























      0












      0








      0








      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










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 16:42









      AmitAmit

      63




      63
























          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
          });


          }
          });














          draft saved

          draft discarded


















          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
















          draft saved

          draft discarded




















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Xamarin.iOS Cant Deploy on Iphone

          Glorious Revolution

          Dulmage-Mendelsohn matrix decomposition in Python