Postman导出的Java - OKHttp的代码怎么在本地调试运行

举报
小博测试成长之路 发表于 2022/06/21 00:52:43 2022/06/21
【摘要】 在使用过postman工具的朋友应该都知道,postman工具可以很便捷的导出很多编程语言/脚本语言的接口请求的脚本。那么,导出的java脚本在本地怎么样去运行呢? 其实导出的脚本都是可以直接运行的,不过,如果你直接新建一个.java的文件,然后把代码复制粘贴进去运行的话,肯定会报错的,因为导出的代码中是没有import第三方j...

在使用过postman工具的朋友应该都知道,postman工具可以很便捷的导出很多编程语言/脚本语言的接口请求的脚本。那么,导出的java脚本在本地怎么样去运行呢?

其实导出的脚本都是可以直接运行的,不过,如果你直接新建一个.java的文件,然后把代码复制粘贴进去运行的话,肯定会报错的,因为导出的代码中是没有import第三方jar包的操作的代码,没有导入包,肯定是运行报错的,接下来简单记录下,要导入哪些包之后,才能正常的运行用OKHttp框架发送接口请求的脚本。

步骤:

在idea中创建一个maven工程,然后在pom.xml文件中加入第三方jar包的依赖,省得去网上下载jar包导入。当然,这里要求你本地要提前配置好maven的环境。

先到maven仓库中去找对应jar包的pom依赖

仓库地址:https://mvnrepository.com/   (网上有很多,也可以自己搜索)

b5eadf03d2c76caac0e7ced3db9a41e7.png

d3849db321f2c9f08ac45208e122a8fb.png

从上面选择对应的版本后,然后复制依赖关系到pom文件中去:

7a599ae44288e99cafa00e2ac7bd27f7.png

af56c37ab62bc0088c28e61227ee734b.png

接下来找一个postman中的调试好的接口,然后转换成java代码,拿出来运行一下试试

以之前部署的开源项目的一个登录接口为例,导出java脚本试一试:

0264698a2aaf6cafe210b1e74e248def.png

复制生成的java代码进去之后,需要导入包才能运行

4c10c37f560743417be141a5e2f95da7.png

复制出来的代码,需要导入包:

import okhttp3.*;
  

复制的代码放在main方法里面才能运行,还需要导入

import java.io.IOException;
  

最终完整代码如下:


   
  1. import okhttp3.*;
  2. import java.io.IOException;
  3. public class Test {
  4. public static void main(String[] args) throws IOException {
  5. OkHttpClient client = new OkHttpClient().newBuilder()
  6. .build();
  7. MediaType mediaType = MediaType.parse("application/json;charset=UTF-8");
  8. RequestBody body = RequestBody.create(mediaType, "{\r\n \"username\": \"yanshi\",\r\n \"password\": \"123456\",\r\n \"code\": \"1234\",\r\n \"uuid\": \"xxxxxxxxxxx\"\r\n}");
  9. Request request = new Request.Builder()
  10. .url("http://8.129.162.225:8080/login")
  11. .method("POST", body)
  12. .addHeader("Connection", "keep-alive")
  13. .addHeader("Pragma", "no-cache")
  14. .addHeader("Cache-Control", "no-cache")
  15. .addHeader("Accept", "application/json, text/plain, */*")
  16. .addHeader("isToken", "false")
  17. .addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36")
  18. .addHeader("Content-Type", "application/json;charset=UTF-8")
  19. .addHeader("Origin", "http://8.129.162.225")
  20. .addHeader("Referer", "http://8.129.162.225/")
  21. .addHeader("Accept-Language", "zh,zh-CN;q=0.9,en;q=0.8")
  22. .build();
  23. Response response = client.newCall(request).execute();
  24. }
  25. }

注意:导出的代码只是会发送请求,但是并不会打印返回结果,打印语句可以自己在后面加一行:

System.out.println(response.body().string());
  

输出的内容如下:

241644657652a81ad098e66464a3500a.png

java里面要获取OKHttpClient返回结果的文本内容的话,可以用response.body().string()

注意:

在运行的时候可能会出现如下错误:


   
  1. Exception in thread "main" java.lang.NoSuchMethodError: kotlin.collections.ArraysKt.copyInto([B[BIII)[B
  2. at okio.Segment.writeTo(Segment.kt:169)
  3. at okio.Segment.compact(Segment.kt:152)
  4. at okio.Buffer.write(Buffer.kt:1491)
  5. at okio.Buffer.read(Buffer.kt:1503)
  6. at okio.Buffer.writeAll(Buffer.kt:1290)
  7. at okio.Options$Companion.buildTrieRecursive(Options.kt:189)
  8. at okio.Options$Companion.buildTrieRecursive(Options.kt:175)
  9. at okio.Options$Companion.buildTrieRecursive$default(Options.kt:107)
  10. at okio.Options$Companion.of(Options.kt:72)
  11. at okhttp3.internal.Util.<clinit>(Util.kt:70)
  12. at okhttp3.OkHttpClient.<clinit>(OkHttpClient.kt:1073)
  13. at com.oceanus.marketdata.Test.main(Test.java:8)

adbd9bd10c752d5b037dda3d9d4ca952.png

解决方法:

在pom文件中加入下面的依赖即可:


   
  1. <dependency>
  2. <groupId>org.jetbrains.kotlin</groupId>
  3. <artifactId>kotlin-stdlib</artifactId>
  4. <version>1.3.70</version>
  5. </dependency>

至于为什么会报错,为什么加这个就可以解决,我也不太清楚。

d2967622b124d02d3c34cef353d0f8bd.png

 更多精彩内容,可点击阅读全文或者公众号菜单处进行查看。

文章来源: xiaobotester.blog.csdn.net,作者:小博测试成长之路,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaobotester.blog.csdn.net/article/details/125353827

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。