2017-02-16 13 views
0

У меня проблема с отправкой Json из приложения в API. API = Spring + Hibernate. API будет работать, потому что посылая JST POST-программу POSTMAN добавляется в базу данных. Мобильное приложение не отправляет файл JSON. URL-адрес передачи действует как нулевая базовая форма необходимых таблиц.Android POST Json to API

public class MainActivity extends AppCompatActivity { 

    TextView txtStatus; 
    LoginButton loginButton; 
    CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     FacebookSdk.sdkInitialize(getApplicationContext()); 
     setContentView(R.layout.activity_main); 

     initializeControls(); 
     loginWithFB(); 

    } 

    private void initializeControls(){ 
     callbackManager = CallbackManager.Factory.create(); 
     txtStatus = (TextView)findViewById(R.id.txtStatus); 
     loginButton = (LoginButton)findViewById(R.id.login_button); 
     loginButton.setReadPermissions(Arrays.asList("email", "user_birthday, user_photos")); 

    } 

    private void loginWithFB(){ 
     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       Log.e("Success", "Login"); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id, first_name, last_name ,email, gender, birthday"); 

       GraphRequest gr = GraphRequest.newMeRequest(
         loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
          @Override 
          public void onCompleted(JSONObject json, GraphResponse response) { 

           String jsonResult = String.valueOf(json); 
           txtStatus.setText(jsonResult); 

           URL url = null; 
           try { 
            url = new URL("http://pikmybeta.x3pg3pxqri.eu-central-1.elasticbeanstalk.com/pikmy/user/create"); 
           } catch (MalformedURLException e) { 
            e.printStackTrace(); 
           } 
           AsyncT asyncT = new AsyncT(jsonResult,url); 
           asyncT.execute(); 
          } 

         }); 
       gr.setParameters(parameters); 
       gr.executeAsync(); 
      } 

      @Override 
      public void onCancel() { 
       txtStatus.setText("Cancelled"); 
      } 

      @Override 
      public void onError(FacebookException error) { 
       txtStatus.setText("Error " + error.getMessage()); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
} 

.

public class AsyncT extends AsyncTask<String,Void,Void> { 

    String jsonResult; 
    URL url; 

    public AsyncT(String jsonResult, URL url) { 
     this.jsonResult = jsonResult; 
     this.url = url; 
    } 

    @Override 
    protected Void doInBackground(String... params) { 

     try { 
      HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoInput(true); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setRequestProperty("Content-Type", "application/json"); 
      httpURLConnection.connect(); 

      DataOutputStream wr = new DataOutputStream(httpURLConnection.getOutputStream()); 
      wr.writeBytes(jsonResult); 
      wr.flush(); 
      wr.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 
+0

Какую ошибку вы получаете? –

+0

Не отображается ошибка. В таблице указаны "нулевые" – programmerJavaPL

ответ

0

Если вы можете сделать это с помощью POSTMAN, но не из приложения, попробуйте отправить его с помощью библиотеки волейбола. Это очень легко и полезно для работы, и вы можете найти множество обучающих программ для этого в сети. Вот ссылка для начала работы:

Get Started: volley

Tuturial for HTTP Requests