当前位置: 首页 > 知识库问答 >
问题:

使用放心的POST方法中的授权

蔚桐
2023-03-14

我试图发送一个POST方法到我的API,它返回401错误,而不是200 OK。

事情是这样的:

使用邮递员:POST请求工作正常。

在授权部分,我选择了Basic Auth,并提供了用户名/pwd。

在标题部分,我已经给出了X-应用程序Content-Type。我在邮差的身体是:

{
  "description": "TestAPIPostmannolast",
  "issue_type": {
    "id": "271341877549072389",
    "name": "Design"
  },
  "area": {
    "id": "271341877549072406"
  },
  "issue_id": "9d5ac7da-9626-11e8-9eb6-529269fb1459"
}

使用Restarsured:失败并出现401错误。

package basic;

import io.restassured.response.Response;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import io.restassured.RestAssured;
import static io.restassured.RestAssured.given;

public class GetRequest {


    @BeforeClass
    public void setup() {

        RestAssured.baseURI = "https://123.com";

        RestAssured.basePath = "/field-management/api";

        RestAssured.authentication =    RestAssured.basic("username", "password");

    }

    @Test
    public void responseBody(){

        Response response = given()
                .header("X-application", "63fc4887-aed9-497f-bad5-d7ef2b90cdaf")
                .contentType("application/json")
                .body("{\n" +
                        "  \"description\": \"Intellij  \",\n" +
                        "  \"issue_type\": {\n" +
                        "    \"id\": \"271341877549072389\",\n" +
                        "    \"name\": \"Design\"\n" +
                        "  },\n" +
                        "  \"area\": {\n" +
                        "    \"id\": \"271341877549072406\"\n" +
                        "  },\n" +
                        "  \"issue_id\": \"2dd8ae7a-966e-11e8-9eb6-529269fb1459\n" +
                        "\n\"\n" +
                        "}")

                .when()
                .post("/projects/1879048400/areas/271341877549072406/issue/");

        System.out.println(response.body().asString());
    }

答复:

{"message":"Authentication Failed","errorKey":null}

不知道为什么当我尝试重新启动时它不起作用。

共有2个答案

滕夜洛
2023-03-14

你能试试下面的方法吗

>

  • 创建一个实用程序方法,用于构建请求规范
  • 使用构建的请求规范对象进行POST调用。您可以将身份验证部分嵌入请求规范中。

    private static RequestSpecification request_spec_builder_POST(Object _body, String _username, String _pass){
        RequestSpecBuilder _builder = new RequestSpecBuilder();
        _builder.setBody(_body);
    
        _builder.setContentType("application/json");
        PreemptiveBasicAuthScheme auth = new PreemptiveBasicAuthScheme();
        auth.setUserName(_username);
        auth.setPassword(_pass);
        _builder.setAuth(auth);
        RequestSpecification _spec = _builder.build();
        return RestAssured.given(_spec);
    }
    

    在您的测试类中,使用此选项进行POST调用,如下所示:

    @Test
    public void myTest(){
       RequestSpecification http_req = MyRequestSpecBuilder.request_spec_builder_POST(_obj, username, pass);
       Response _response = http_req.post("/endPoint"); 
    }
    

  • 壤驷棋
    2023-03-14

    添加下面的代码修复了它。这是邮递员寄来的信物

     .header("Authorization","Basic cG9sZWFyeTpBdXRoM250MWM=")
    
     类似资料:
    • 我已经写下了如下测试用例,并得到了以下错误, 日志错误: 失败:setpassword java.lang.AssertionError:1个预期失败。预期状态代码 代码:

    • 我有一个很长的JSON正文,这是一个数组。我需要在POST方法的正文中发送这个。我使用放心。怎么做?

    • 对于包含JSON主体的post请求,我使用rest assured 我的post请求代码是:- 好心的帮助....

    • 我已经创建了非核心webapi项目来与移动应用程序交互。例如,如果我创建了一个名为Data的控制器,它有一个名为Search的方法,如下图所示。该项目已配置为发送和接收json数据。 我可以通过使用以下url,使用postman向该方法发送post请求http://localhost/api/Data/search 类似地,我可以在控制器内创建其他函数,并使用路由“/api/[controller

    • 我必须发送一个带有xml数据的post请求,然后验证响应,例如检查状态代码和响应体。

    • 本文向大家介绍jquery中AJAX请求 $.post方法的使用,包括了jquery中AJAX请求 $.post方法的使用的使用技巧和注意事项,需要的朋友参考一下 使用jQuery的$.post方法可以以POST形式向服务器发起AJAX请求。$.post方法是jQuery的实用工具方法。 post和get发送方式的特点, GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见; GET 方法