2017-07-21 1 views
0

Je suis nouveau sur le développement Android et essayer d'utiliser OkHttp faire une demande POST montrant les données sur mon APP Android, je me suis référé à plusieurs exemples puis les assembler aux classes ci-dessous, mais il n'a pas acquis de données, je suppose pour acquérir les données de la classe OkHttp, puis l'envoyer à la classe API, puis-je demander où il a mal tourné et comment l'ajuster?Comment transférer les données POST de backend à Android?

la classe OkHttp:

public static class OkHttpPost { 
    OkHttpClient client = new OkHttpClient(); 

    RequestBody requestBody = new MultipartBody.Builder() 
     .setType(MultipartBody.FORM) 
     .build(); 

    @TargetApi(Build.VERSION_CODES.KITKAT) 
    String run(String url) throws IOException { 

     Request request = new Request.Builder() 

       .method("POST", requestBody.create(null, new byte[0])) 
       .url("124.173.120.222") 
       .post(requestBody) 
       .build(); 

     try (Response response = client.newCall(request).execute()) { 
      return response.body().string(); 
     } 
    } 

    public static void main(String[] args) throws IOException { 
     OkHttpPost Post = new OkHttpPost(); 
     String response = null; 
     if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
      response = Post.run("124.173.120.222"); 
     } 
     System.out.println(response); 
    }} 

classe API:

ConnectAPI.A110(context, Scode, Manual, new ZooCallback(){ 
     @Override 

     public void onSuccess(JSONObject response){ 
      super.onSuccess(response); 


      try{ 
       new OkHttpPost(); 
       open.setText(response.getString("Open")); 
       high.setText(response.getString("High")); 
       low.setText(response.getString("Low")); 
      } 
      catch(JSONException e){ 
       Log.d("A110 gone wrong", e.getMessage()); 

      } 

     } 
     public void onFail(String title, String errorMessage){ 
      super.onFail(title, errorMessage); 
      Log.d(TAG, errorMessage); 
     } 
    }); 

Répondre

0

Vous ne pouvez pas créer une classe statique de niveau supérieur (OkHttpPost); c'est ce que le compilateur essaie de vous dire. Jetez aussi un coup d'oeil à la réponse here pour savoir pourquoi c'est le cas. L'essentiel est:

Ce que le statique se résume à est qu'une instance de la classe peut se tenir tout seul. Ou, inversement: une classe interne non statique (= instance classe interne) ne peut pas exister sans une instance de la classe externe. Comme une classe de niveau supérieur n'a pas de classe externe, elle ne peut être que statique. Parce que toutes les classes de niveau supérieur sont statiques, avoir le mot-clé statique dans une définition de classe de niveau supérieur est inutile.