2017-02-16 50 views
0

我在将Json从应用程序发送到API时遇到问题。 API = Spring + Hibernate。 API将工作,因为发送的Json POST程序POSTMAN被添加到数据库中。移动应用程序不会发送JSON文件。传输网址充当空白的基本表单需要的表格。Android POST Json到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

它不显示错误。在表中是“null”的一部分 – programmerJavaPL

回答

0

如果您可以使用POSTMAN而不是应用程序尝试使用排球库发送它。合作非常简单且有帮助,您可以在网络中找到大量的教程。这里是链接上手:

Get Started: volley

Tuturial for HTTP Requests