我用Java编写的测试porgram来测试我的连接到问题的REST API在Django(djangorestframework是精确)。 其中一个选项是测试的API与卷曲的。 从运行正常工作外壳curl命令:例如:
curl --show-error --request GET --header 'Accept: application/json' --user "user:pwd" http://127.0.0.1:8000/api/v1/
这将返回很好的JSON格式的API根URL和帮助文件。
现在,当我尝试调用从Java一样,采用的ProcessBuilder,我得到这样的回答:
{"detail": "You do not have permission to access this resource. You may need to login or otherwise authenticate the request."}
我使用的Java代码:
ProcessBuilder p=new ProcessBuilder("curl","--show-error", "--request","GET",
"--header","'Accept: application/json'", "--user","\"" + userName + ":" + password + "\"", getApiRootUrlString());
final Process shell = p.start();
因为我也赶错误流:
InputStream errorStream= shell.getErrorStream();
InputStream shellIn = shell.getInputStream();
我知道他开始curl命令,因为在制作的一个选项是错误显示卷曲帮助文本。
我没有放弃知道什么是调用它,肯定它的相同的命令之间的差异。
顺便说一下,“getApiRootUrlString()返回正确的网址: http://127.0.0.1:8000/api/v1/