簡體   English   中英

Android中的HTTP POST請求導致服務器崩潰

[英]HTTP POST request in Android causing server to crash

我正在拔頭發,試圖使它正常工作。 我正在使用OkHTTP向我的服務器發出POST請求。 但是,我嘗試使用參數成功執行POST請求的每種方法都會導致服務器宕機,並給我一個“ 503服務不可用”的響應。 我使用外部客戶端來測試服務器,例如Advanced Rest Client擴展,它運行良好。

API的URL格式為“ https://mystuff-herokuapp.com/postuser ”,我的主體參數為“ user_id”,“ userName”,“ email”。 我嘗試將標頭添加到請求中,從FormBodyEncoding()更改為MultiPartBuilder(),等等。

onCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard);
    //set toolbar as the acting action bar
    Toolbar actionToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(actionToolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    Intent intent = getIntent();
    String photoUrl = intent.getStringExtra("photo");
    String userTwitterID = intent.getStringExtra("userID");
    String userName = intent.getStringExtra("name");
    String userEmail = intent.getStringExtra("email");

    JSONObject jObject = new JSONObject();

    try {
        jObject.put("user_id", userTwitterID);
        jObject.put("userName", userName);
        jObject.put("userEmail", userEmail);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    new UserApiProcess().execute(jObject);
}

異步任務

private class UserApiProcess extends AsyncTask<Object, Void, Void>{
    @Override
    protected Void doInBackground(Object... strings) {

        OkHttpClient client = new OkHttpClient();
        RequestBody formBody = new MultipartBuilder()
                .addFormDataPart("user_id", "800")
                .addFormDataPart("userName", "Nick")
                .addFormDataPart("email", "something@something.com")
                .build();
        Request request = new Request.Builder()
                .url("https://mystuff.herokuapp.com/postuser")
                .addHeader("Content-Type", "x-www-form-urlencoded")
                .post(formBody)
                .build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
            if(!response.isSuccessful()) throw new IOException("Unexpected code " + response);
            System.out.println(response.body().string());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}

Advanced Rest Client的成功響應 在此處輸入圖片說明

通過Android我的服務器錯誤 在此處輸入圖片說明

嘗試這個。 它應該工作。

private class UserApiProcess extends AsyncTask<Object, Void, Void>{

@Override
protected Void doInBackground(Object... strings) {
    OkHttpClient client = new OkHttpClient();
    RequestBody formBody = new FormEncodinBuilder()
            .add("user_id", "800")
            .add("userName", "Nick")
            .add("email", "something@something.com")
            .build();
    Request request = new Request.Builder()
            .url("https://mystuff.herokuapp.com/postuser")
            .addHeader("Content-Type", "x-www-form-urlencoded")
            .post(formBody)
            .build();
    Response response = null;
    try {
        response = client.newCall(request).execute();
        if(!response.isSuccessful()) throw new IOException("Unexpected code " + response);
        System.out.println(response.body().string());
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM