在使用过postman工具的朋友应该都知道,postman工具可以很便捷的导出很多编程语言/脚本语言的接口请求的脚本。那么,导出的java脚本在本地怎么样去运行呢?
其实导出的脚本都是可以直接运行的,不过,如果你直接新建一个.java的文件,然后把代码复制粘贴进去运行的话,肯定会报错的,因为导出的代码中是没有import第三方jar包的操作的代码,没有导入包,肯定是运行报错的,接下来简单记录下,要导入哪些包之后,才能正常的运行用OKHttp框架发送接口请求的脚本。
步骤:
在idea中创建一个maven工程,然后在pom.xml文件中加入第三方jar包的依赖,省得去网上下载jar包导入。当然,这里要求你本地要提前配置好maven的环境。
先到maven仓库中去找对应jar包的pom依赖
仓库地址:https://mvnrepository.com/ (网上有很多,也可以自己搜索)
从上面选择对应的版本后,然后复制依赖关系到pom文件中去:
接下来找一个postman中的调试好的接口,然后转换成java代码,拿出来运行一下试试
以之前部署的开源项目的一个登录接口为例,导出java脚本试一试:
复制生成的java代码进去之后,需要导入包才能运行
复制出来的代码,需要导入包:
import okhttp3.*;
复制的代码放在main方法里面才能运行,还需要导入
import java.io.IOException;
最终完整代码如下:
import okhttp3.*;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json;charset=UTF-8");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"username\": \"yanshi\",\r\n \"password\": \"123456\",\r\n \"code\": \"1234\",\r\n \"uuid\": \"xxxxxxxxxxx\"\r\n}");
Request request = new Request.Builder()
.url("http://8.129.162.225:8080/login")
.method("POST", body)
.addHeader("Connection", "keep-alive")
.addHeader("Pragma", "no-cache")
.addHeader("Cache-Control", "no-cache")
.addHeader("Accept", "application/json, text/plain, */*")
.addHeader("isToken", "false")
.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")
.addHeader("Content-Type", "application/json;charset=UTF-8")
.addHeader("Origin", "http://8.129.162.225")
.addHeader("Referer", "http://8.129.162.225/")
.addHeader("Accept-Language", "zh,zh-CN;q=0.9,en;q=0.8")
.build();
Response response = client.newCall(request).execute();
}
}
注意:导出的代码只是会发送请求,但是并不会打印返回结果,打印语句可以自己在后面加一行:
System.out.println(response.body().string());
输出的内容如下:
java里面要获取OKHttpClient返回结果的文本内容的话,可以用response.body().string()
注意:
在运行的时候可能会出现如下错误:
Exception in thread "main" java.lang.NoSuchMethodError: kotlin.collections.ArraysKt.copyInto([B[BIII)[B
at okio.Segment.writeTo(Segment.kt:169)
at okio.Segment.compact(Segment.kt:152)
at okio.Buffer.write(Buffer.kt:1491)
at okio.Buffer.read(Buffer.kt:1503)
at okio.Buffer.writeAll(Buffer.kt:1290)
at okio.Options$Companion.buildTrieRecursive(Options.kt:189)
at okio.Options$Companion.buildTrieRecursive(Options.kt:175)
at okio.Options$Companion.buildTrieRecursive$default(Options.kt:107)
at okio.Options$Companion.of(Options.kt:72)
at okhttp3.internal.Util.<clinit>(Util.kt:70)
at okhttp3.OkHttpClient.<clinit>(OkHttpClient.kt:1073)
at com.oceanus.marketdata.Test.main(Test.java:8)
解决方法:
在pom文件中加入下面的依赖即可:
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.3.70</version>
</dependency>
至于为什么会报错,为什么加这个就可以解决,我也不太清楚。
** 更多精彩内容,可点击阅读全文或者公众号菜单处进行查看。**
版权归原作者 小博测试成长之路 所有, 如有侵权,请联系我们删除。