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

无法使用Android的wp API发布请求

左康安
2023-03-14

更新:工作代码!

static public HttpURLConnection HTTPconnectionPOST(String url_api, String name, String password,String method) throws IOException {
     URL url = new URL(url_api);

    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    String urlParameters = "Content=Testing&title=TheTest";
    connection.setRequestMethod("POST");

    String userCredentials = name+":"+password;

    connection.addRequestProperty("Authorization", "Basic " + Base64.encodeToString((name + ":" + password).getBytes(), Base64.DEFAULT).trim());
    connection.setRequestProperty("Host", "localhost");


    connection.setDoOutput(true);
    DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
    dStream.writeBytes(urlParameters);
    dStream.flush();
    dStream.close();



      connection.connect();
      return connection;

    }

这是我用来发出POST请求的代码:

static public HttpURLConnection HTTPconnectionPOST(String url_api, String name, String password,String method) throws IOException {
     URL url = new URL(url_api);
     System.out.println(url_api);
    urlConnection = (HttpURLConnection) url.openConnection();


   urlConnection.setRequestMethod(method);

   String userCredentials = name+":"+password;
   String basicAuth = "Basic " + new String(Base64.encode(userCredentials.getBytes(),Base64.DEFAULT));
   urlConnection.setRequestProperty("Host", "localhost");
   urlConnection.setRequestProperty ("Authorization", basicAuth);

   urlConnection.setRequestProperty("Accept-Charset", "UTF-8");


    /* optional request header */
   urlConnection.setRequestProperty("Content-Type", "application/json");

   /* optional request header */
   urlConnection.setRequestProperty("Accept", "application/json");

   urlConnection.setConnectTimeout (30000) ; 

    urlConnection.setDoOutput(true); 
    String a="testing";
    String b="test";
    String c="test";
    Uri.Builder builder = new Uri.Builder()
       .appendQueryParameter("Content", a)
       .appendQueryParameter("title", b)
       .appendQueryParameter("excerpt", c);
      String query = builder.build().getEncodedQuery();

      OutputStream os = urlConnection.getOutputStream();
      BufferedWriter writer = new BufferedWriter(
      new OutputStreamWriter(os, "UTF-8"));
      writer.write(query.toString());
      writer.flush();
      writer.close();
      os.close();
      System.out.println(query);

      urlConnection.connect();
      return urlConnection;

    }

作为我得到的回应:未能发布数据400,错误流内容是:{ “代码”:“empty_content”,“消息”:“内容,标题和摘录都是空的。

共有1个答案

南门展
2023-03-14

下面是解决方案!

Base64.encodeToString 在编码的 user:pass 的末尾添加一个 \n,以便 Header 无效。

来源

 类似资料:
  • 我正在尝试根据下面的代码提出帖子请求: 此请求不需要身份验证,也不需要登录和密码。在邮递员那里,我可以成功地提出请求,但当我尝试执行上述代码时,我得到了: 401未经授权 我在邮递员那里模拟了错误,它给了我下面的信息: 当我在Postman中将身份验证方法更改为“No Auth”时,请求运行良好。 我想我必须在代码中设置这个选项“No Auth”,但我不知道如何设置。 我这样做: 但错误仍在继续。

  • 问题内容: 我一直在尝试从SO和其他站点上的大量示例中学习,但是我无法弄清楚为什么我一起学习的示例无法正常工作。我正在构建一个小型的概念验证应用程序,该应用程序可以识别语音并将其(文本)作为POST请求发送到node.js服务器。我确认了语音识别功能,并且服务器正在通过常规浏览器访问获得连接,因此我被认为是问题出在应用程序本身。我想念一些小而愚蠢的东西吗?没有引发任何错误,但是服务器从不识别连接。

  • 我有个大麻烦。我必须将应用程序中的一些参数发布到URL。但是,当我试图在WebView对象中执行此操作时,它会向我报告一个异常,该异常表示“不受信任的证书”(该异常由WebViewClient onReceivedSslError()的重写中的方法报告)。如何才能与服务器正确握手?你能给我一些提示吗?我快疯了... 真的,真的谢谢... 编辑:这是我定义webview的方式 这就是我在WebVie

  • 我无法使用REST保证执行我们的REST帖子网址。我收到状态 404 错误。我们的REST网址不需要任何身份验证,正文等。相同的网址在POSTMAN,RESTEasy中工作正常。我尝试了所有四种组合以获得响应

  • 向Google Play商店上传应用程序时出错 您上传了一个APK或Android应用程序包,其中包含一个活动、活动别名、服务或带有意图过滤器的广播接收器,但没有设置“Android:exported”属性。此文件无法安装在Android 12或更高版本上。请参阅:developer.android.com/about/versions/12/bhavior-changes-12#导出 具有意图过

  • 问题内容: 我想使用wget将图片(使用身份验证令牌“ AUTH_1624582364932749DFHDD”)上传到远程服务器到“ test”文件夹。 该命令不起作用(授权失败),我想确保它与语法无关: 有什么建议么? 问题答案: Wget当前仅支持x-www-form-urlencoded数据。不是用于将文件作为表单附件传输,而是需要格式为的数据。 并以相同的方式工作:唯一的不同是,您可以在命