HttpURLConnection post не работает - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь опубликовать объект в своем API, но он не работает.

Мой метод API выглядит следующим образом

[Route("Route is working but wanna keep this address hidden")]
[System.Web.Http.Acceptverbs("POST")]
[HttpPost]
public void Post(Comment comment)
{
db.Comments.Add(comment);
db.SaveChanges();
}

Итак, у меня есть API и этот методи затем, когда я нажимаю кнопку в моем приложении для Android, я хочу, чтобы он отправлял сообщения этому методу, но ничего не публикуется.

Мой код в моем приложении для Android

public class ConnectionPost extends AsyncTask<String,String,String> {
    @Override
    protected String doInBackground(String... params) {
        URL url = null;
        try {
            url = new URL("Keeping this address hidden");



        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");

        JSONObject comment = new JSONObject();
        comment.put("Name","Joe");

        OutputStreamWriter ap_osw= new OutputStreamWriter(conn.getOutputStream());
        ap_osw.write(comment.toString());
        ap_osw.flush();
        ap_osw.close();

            Log.d("test", ""  + comment.toString());

        }
        catch (Exception e){

        }
        return "";
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);
    }
}

Когда я нажимаюКнопка Я вызываю метод, который содержит этот код.

 ConnectionPost send = new ConnectionPost();
 send.execute();

В LogCat я вижу свой созданный объект, но ничего не публикуется, поэтому интересно, что же я делаю не так?

Извините за неправильное именование некоторых вещей, это исправитэто позже.

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Я исправил это :) Было то, что в моем объекте у меня есть поле DateTime, и я пытался установить его как нулевое при публикации, но, конечно, это не работает.Изменил его на DateTime.Now.

0 голосов
/ 19 мая 2018

Ваш код отлично работает для меня, что приводит к ужасному «работает на моей машине».

1) У вас есть <uses-permission android:name="android.permission.INTERNET" /> в манифесте?

2)Исключение, это поможет вам отладки.

3) Чтение / запись ответа от сервера, это поможет вам отладки.

InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder result = new StringBuilder();
String line;
while((line = reader.readLine()) != null) {
    result.append(line);
}
reader.close();
in.close();
Log.d("test", result.toString());

Много раз с подключениями это конфигурацияэто не код НЕ.Ваш код в порядке.

...