【问题标题】:Android POST Json to APIAndroid POST Json 到 API
【发布时间】:2017-02-16 14:00:25
【问题描述】:

我在将 Json 从应用程序发送到 API 时遇到问题。 API = Spring + Hibernate。 API 将起作用,因为发送 Json POST 程序 POSTMAN 添加到数据库中。移动应用程序不发送 JSON 文件。传输 URL 充当所需表的空基本表单。

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

【问题讨论】:

  • 你遇到了什么错误?
  • 不显示错误。在表中是“null”的一部分

标签: android json android-studio post android-asynctask


【解决方案1】:

如果您可以使用 POSTMAN 但不能通过应用程序执行此操作,请尝试使用 volley 库发送它。使用起来真的很简单也很有帮助,你可以在网络中找到很多关于它的教程。这是开始的链接:

Get Started: volley

Tuturial for HTTP Requests

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多