HttpURLConnection post 不工作

HttpURLConnection post doesn't work

我正在尝试 post 我的 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 应用程序中按下一个按钮时,我希望它 post 到这个方法但是没有任何提示 posted.

我的 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 中,我可以看到我创建的对象,但没有任何内容 posted,所以想知道我做错了什么?

抱歉,有些东西命名不当,稍后会修复。

你的代码对我来说工作正常,导致可怕的,"works on my machine."

1) 清单中有 <uses-permission android:name="android.permission.INTERNET" /> 吗?

2) 处理异常,方便调试。

3) Read/log 服务器的响应,可以帮你调试。

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

很多时候连接失败的是配置而不是代码。你的代码没问题。

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