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

通过HttpUrlConnection在服务器上注册用户数据的Post请求

史涵育
2023-03-14

我目前在一个项目中,我需要发送用户名,密码和电子邮件的用户注册在我的服务器上的用户。我为此使用了POST命令,因为我必须为注册一个用户发送3个值,所以我为此使用了ContentValues。下面是我的代码:

@Override
    protected String doInBackground(String... params) {
        try {
            url = new URL(params[0]);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setDoInput(true);
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setRequestMethod("POST");

            ContentValues values = new ContentValues();
            values.put("email", "abc@xyz.com");
            values.put("password", "123");
            values.put("name","ABC");

            outputStream = httpURLConnection.getOutputStream();

            bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
            bufferedWriter.write(getQuery(values));
            bufferedWriter.flush();

            statusCode = httpURLConnection.getResponseCode();

            Log.i("Result",String.valueOf(statusCode));

            inputStream = new BufferedInputStream(httpURLConnection.getInputStream());

            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            int data = inputStreamReader.read();
            while (data != -1) {
                char current = (char) data;
                result += current;
                data = inputStreamReader.read();
            }

            JSONObject jsonObject = new JSONObject(result);

            Log.i("Result",String.valueOf(jsonObject));

            if (statusCode == 200) {
                inputStream = new BufferedInputStream(httpURLConnection.getInputStream());

                Log.i("Result","Correct Data Returned");

                JSONObject jsonObject = new JSONObject(response);

                return true;

            } else {
                Log.i("Result","Data not returned");
                return false;
            }

        } catch (Exception e) {

            e.printStackTrace();
        } finally {
            try {
                if (inputStream != null) {
                    inputStream.close();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }
private String getQuery(ContentValues values) throws UnsupportedEncodingException
    {
        StringBuilder result = new StringBuilder();
        boolean first = true;

        for (Map.Entry<String, Object> entry : values.valueSet())
        {
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(String.valueOf(entry.getValue()), "UTF-8"));
        }

        Log.i("Result",result.toString());

        return result.toString();
    }
Result: name=ABC&email=abc%40xyz.com&password=123
Result: 422
System.err: java.io.FileNotFoundException: http://docpanel.myworkdetails.com/api/auth/register
"errors": {
     "email": [
       "The email field is required."
     ],
     "password": [
       "The password field is required."
     ],
     "name": [
       "The password field is required."
     ]
   },
   "status_code": 422

共有1个答案

汤飞翮
2023-03-14

为什么不直接将url与参数连接起来呢?

然后请求如下所示:“http://example.com/test?param1=a&param2=b&param3=c”

 类似资料:
  • 我有这个代码: 当为 true(执行 POST 或 PUT 请求)时,此代码会引发 IOException,并且不会完成请求。我尝试对 重新排序、编写调用和流创建块,但没有排列工作。 在所有情况下,BufferedReader都工作得很好,不会抛出任何异常。< code>getQuery正确返回URL编码的字符串。 以下是来自IOExc的堆栈跟踪: 最终发生的是请求通过,但没有一个POST或PUT

  • 问题内容: 我正在尝试通过一个请求将数据从一个node.js服务器发送到另一个node.js服务器。我在“客户端” node.js中执行的操作如下: 该块或多或少是从node.js网站获取的,因此应该正确。我唯一看不到的是如何在变量中包括用户名和密码以进行实际登录。这是我处理服务器node.js中的数据的方式(我使用express): 如何将这些和字段添加到变量中以使其登录? 谢谢 问题答案: 发

  • 在进行Hyperledger fabric设置时,我们为组织创建加密材料并提及用户,相应地生成用户加密材料,用于在通过CLI进行日志记录时调用链码。另外,当我们尝试通过SDK连接网络时,我们也需要注册和注册用户来连接网络。那么,这两种用户的区别是什么呢?

  • 我对docker,Spring框架的一切都很陌生…它们成功地在localhost环境中运行,现在我想把它们推送到docker中,但是总是给我错误,我在那里卡住了大约一周。有人能帮我弄清楚吗!!! 现在我有 eureka 服务器和云配置服务器服务,这是我的代码: 尤里卡服务器应用程序.yml 和 Dockerfile: 现在我有云配置服务器应用程序.yml:在这个文件中,我试图在github上备份它

  • 问题内容: 我已经开发了一个Java代码,该代码使用URL和HttpUrlConnection将以下cURL转换为Java代码。卷曲是: 我已经编写了此代码,但是它始终会给HTTP代码400错误的请求。我找不到丢失的内容。 问题答案: 你的JSON不正确。代替 写 因此,JSONObject.toString()应该只为外部对象调用一次。 另一件事(可能不是你的问题,但我想提一下): 为确保不会遇

  • 我已经写了这段代码,但它总是给HTTP代码400错误的请求。我找不到丢失的东西。