当前位置: 首页 > 知识库问答 >
问题:

[Android]-使用HttpUrlConnection发布Json

林星阑
2023-03-14

应用程序(Android):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    buttonSend=(Button)findViewById(R.id.button_send);


    buttonSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AsyncTaskRunner postReq = new AsyncTaskRunner();
            postReq.execute("start");

        }
    });
}

private class AsyncTaskRunner extends AsyncTask<String,String,String>{
    @Override
    protected String doInBackground(String... params) {
        try {
            String url="my url";
            URL object=new URL(url);

            HttpURLConnection con = (HttpURLConnection) object.openConnection();
            con.setDoOutput(true);
            con.setDoInput(true);
            con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            con.setRequestMethod("POST");

            JSONObject cred = new JSONObject();
            cred.put("name","my_name")

             OutputStream os = con.getOutputStream();
             os.write(cred.toString().getBytes("UTF-8"));
             os.close();


        }
        catch (Exception e){
            Log.v("ErrorAPP",e.toString());
        }
        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);
    }
}

在我运行这个应用程序的手机中,我嗅出了数据,我看到应用程序向服务器发送了一个请求,但数据包不包含json

共有1个答案

司业
2023-03-14

我解决了!

变化:

OutputStream os = con.getOutputStream();
         os.write(cred.toString().getBytes("UTF-8"));
         os.close();

致:

DataOutputStream localDataOutputStream = new DataOutputStream(con.getOutputStream());
            localDataOutputStream.writeBytes(cred.toString());
            localDataOutputStream.flush();
            localDataOutputStream.close();
 类似资料:
  • 我从API23改为22,因为他们说httpclient不可用。当我切换到API22时,我遇到了HttpClient、HttpPost和NameValuePair的问题。我找到了使用HttpURLConnectionHandler的解决方案。但是我不知道如何将它用于下面的方法。 有人好心帮我一把

  • 我被夹在中间。我想实现一个POST方法,使用HttpUrlConnection向服务器发送注册用户的电子邮件、名称和密码。以下是我的代码: 我不知道我在哪里犯了错误。我收到以下回复 空格后的“0”是超文本传输协议响应代码返回的响应代码。当我在浏览器中尝试时,我的网址是正确的。我不知道我在哪里犯了错误;是我的服务器故障还是我的代码有错误,因为我不认为我的代码有任何交互处理。 我是Android开发的

  • 问题内容: 如何使用HttpURLConnection发布JSON数据?我正在尝试: 我在第14行中收到编译错误。 cURL请求为: 这是处理cURL请求的方法吗?任何信息对我都会非常有帮助。 谢谢。 问题答案: OutputStream希望使用字节,并且您要向其传递字符。试试这个:

  • 我试图使用身份验证值发送响应到服务器,它在登录时提供给我。服务器仅在发送该值时接受请求。然而,它可以很好地与邮递员(见快照),但不与我的代码。 密码 我也试过这样做

  • 我试图使用HttpURLConnection执行post请求,但不知道如何正确执行。 我可以使用以下代码成功地使用Android AsyncHttp客户端执行请求: 可以在台式机上使用curl执行相同的请求: 这两种方法都给了我来自服务器的预期响应。 现在我想使用HttpURLConntions执行相同的请求。问题是我不知道如何正确地执行它。我尝试过这样的事情: 如何正确地将与使用AsyncHtt

  • 我使用自定义授权标头对http请求进行签名: 所以这个异常不同于最初的异常。当我移除头部并禁用webservice上的授权时,连接将按预期工作。所以问题似乎出在自定义授权标头上。有什么想法吗?