HttpURLConnection帖子不起作用

时间:2018-05-19 13:29:00

标签: android httpurlconnection

我试图将对象发布到我的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 :(得分:0)

你的代码对我来说很好,导致可怕的,#34;在我的机器上工作。&#34;

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());

很多次连接是配置失败而不是代码。你的代码很好。

答案 1 :(得分:0)

我修复了它:)在我的对象中我有一个DateTime字段,我试图在发布时将其设置为null,但是当然它不起作用。将其更改为DateTime.Now。