【发布时间】:2014-01-05 08:49:45
【问题描述】:
我想在获得 Json 响应之前测试需要身份验证的 Rest API。 例如。如果我想访问rest API:http://192.168.xx.xx:9000/dashboards/all/list/m1/p1/sch1
然后
如果我还没有登录,那么这会将我重定向到登录 HTML 页面,登录后,这将显示 Json 输出。
现在我想用 java 写一个放心的代码: 我不知道,这是否可以使用它进行登录。
所以我写了一个简单的代码::
public class TestNGSimpleTest1 {
@Test
public void testAdd() {
//expect().
//statusCode(400).
//body("Status", equalTo("Success")).
//when().
//get("http://localhost:9000/dashboards/all/list/m1/p1/sch1");
//System.out.println("Response received is ::" +res);
Response res = get("http://localhost:9000/dashboards/all/list/m1/p1/sch1");
assertEquals(200,res.getStatusCode());
String json = res.asString();
System.out.println("Response received is :: " +json);
}
所以这里不是获取 Json 响应,而是获取 HTML 源页面响应。
所以,如果可能的话,我的问题是如何登录并获得 Json 响应。
提前致谢。
【问题讨论】:
-
如果您需要抢占式身份验证,请参阅this link here,它显示了如何进行基本或 OAut 身份验证或this link here。
-
其实我也试过这个链接,但问题是它重定向的登录页面,一个html页面..使用你的链接,这只是显示HTML页面。
-
您使用什么类型的身份验证?只是一个登录页面,其中包含一个检查输入的用户名和密码的支持数据库调用 - 所以没有基本身份验证或 OAuth?这似乎很奇怪,但特别是对于主要用于由应用程序而不是人类访问的基于 REST 的 Web 服务(因此在表单字段中没有输入并单击提交按钮)。你使用什么服务器框架? CXF,Restlet,...?您是否已经尝试使用 SoapUI 连接到您的 REST 服务?
-
我会尽快更新它,因为我不确定您要求的答案。每当我发出像 192.168.xx.xx:9000/dashboards/all/list/m1/p1/sch1 这样的 http 请求时,它都会重定向到 HTML 登录页面,在该页面中要求输入用户名和密码。明天我会得到更多细节,并会更新你。谢谢。
-
@RomanVottner 与我们的开发团队讨论.. 他们设计了 Rest API,使得任何 Rest API 请求都将重定向到 HTML 登录页面。他们同意在 QA 测试环境中更改此身份验证行为,但这是正确的方法吗??
标签: java json rest testng rest-assured