当前位置: 首页 > 面试题库 >

将curl调用转换为java urlconnection调用

易宣
2023-03-14
问题内容

我有curl命令:

curl -i -u guest:guest -H "content-type:application/json"
-XPUT \ http://localhost:15672/api/traces/%2f/my-trace \
-d'{"format":"text","pattern":"#"}'

我想在Java
API中创建HTTP请求,该操作将执行相同的操作。可以在本README中找到该curl命令。它用于开始在RabbitMQ上记录日志。回应并不重要。

现在,我创建了这样的内容(我删除了不太重要的行,例如捕获了异常等),但是不幸的是,它不起作用:

url = new URL("http://localhost:15672/api/traces/%2f/my-trace");
uc = url.openConnection();

uc.setRequestProperty("Content-Type", "application/json");
uc.setRequestProperty("format","json");
uc.setRequestProperty("pattern","#")
String userpass = "guest:guest";
String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());
uc.setRequestProperty ("Authorization", basicAuth);

完整代码


问题答案:

这是最终的解决方案:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.Proxy;
import java.net.InetSocketAddress;
import java.io.OutputStreamWriter;

public class Curl {

  public static void main(String[] args) {

    try {

    String url = "http://127.0.0.1:15672/api/traces/%2f/trololo";

    URL obj = new URL(url);
    HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

    conn.setRequestProperty("Content-Type", "application/json");
    conn.setDoOutput(true);

    conn.setRequestMethod("PUT");

    String userpass = "user" + ":" + "pass";
    String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes("UTF-8"));
    conn.setRequestProperty ("Authorization", basicAuth);

    String data =  "{\"format\":\"json\",\"pattern\":\"#\"}";
    OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
    out.write(data);
    out.close();

    new InputStreamReader(conn.getInputStream());

    } catch (Exception e) {
    e.printStackTrace();
    }

  }

}


 类似资料:
  • 如何将下面的cURL命令转换为Postman rest调用? 我尝试了以下方法: URL:(POST)abc.com/input.import 标题:内容类型:application/json 正文: 编辑:需要邮递员的原始正文格式。导入以格式创建请求

  • 我有下面的curl,它成功地将我登录到一个网站。它返回一个302和一个cookie: 不幸的是,我必须插入真正的用户名 我想使用将其转换为Python3代码。所以我做了这个代码: 但是我从Python3代码(200)得到的响应与我从Curl(302)得到的响应不匹配。这意味着目标服务器感觉到两个请求之间的差异。 如何将curl转换为Python3,它发送完全相同的底层HTTP请求?

  • 问题内容: 也许我是Swift中第一个这样做的人,但在Swift中使用&/ inout和uint8_t似乎在网上没有任何东西。有人可以翻译一下吗?这种关系是按位的吗? 目标C 快速尝试 问题答案: 返回一个,可以通过将其转换为指针 Swift 3(Xcode 8)的更新,Swift 5(Xcode 11)的检查:

  • 问题内容: 我从来没有做过卷曲,所以需要一些帮助。我已经尝试通过示例来解决这个问题,但是我无法理解! 我有一个curl命令,可以从linux(ubuntu)命令行成功运行,该命令行通过api将文件放入Wiki。 我需要将此curl命令合并到我正在构建的PHP脚本中。 如何转换curl命令,使其在PHP脚本中起作用? cookie.txt包含身份验证,但是我不会在脚本中将其以明文形式出现,因为这将仅

  • 在迈克尔·哈特尔(Michael Hartl)的rails教程之后,我正在尝试构建一个呼叫跟踪应用程序,以了解更多rails和Twilio。 到目前为止,我已经成功地创造了- 认证 与Stripe集成 每个自动注册的用户都会获得一个Twilio子帐户 用户可以搜索电话号码并购买它们 (在过去的5天里,已经完成了20个Stackoverflow问题!) 现在,我想做的是创建通过Twilio记录通话数

  • 问题内容: 我正在尝试使用jquery ajax进行api调用,我正在使用curl进行api,但是我的ajax抛出了HTTP 500 我有一个curl命令,看起来像这样: 我像这样尝试过ajax,但无法正常工作: 我想念什么? 问题答案: 默认情况下,$。ajax()将转换为查询字符串(如果还不是字符串),因为这里是一个对象,请将其更改为字符串,然后设置,这样它就不会转换为查询字符串。