C # RestClient вызывает POST RESTful API со строкой json, но возвращает NotFound - PullRequest
0 голосов
/ 02 ноября 2019

Как мы встраиваем строку json в другую строку json для передачи в качестве параметра в POST API?

Если я создаю json без дочерней строки json, вызов POST будет успешным. Если я назначу свойство Orders другой строке json, ответ будет NotFound. Ниже приведена настройка в поставщике услуг:

    [ServiceContract]
    public interface ITransactionService
    {
        [OperationContract]
        [WebInvoke(
            UriTemplate = "addTransaction/{transactionJson}/{employeeId}/{token}",
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json)]
        string AddTransaction(string transactionJson, string employeeId, string token);
    }

Ниже приведен код, который вызывает RESTful POST API:

    var transactionEntry = new TransactionTable()
    {
        Amount = (decimal)amount,
        DateTime = DateTime.Now,
        BusinessId = businessId,
        EmployeeId = (int)employeeId,
        Orders = orders
    };

    var transactionJson = JsonConvert.SerializeObject(transactionEntry);

    // Build the POST request
    var url = ConfigurationManager.AppSettings["serviceUrl"];
    var client = new RestClient(url);
    var request = new RestRequest("TransactionService.svc/addTransaction/{transactionJson}/{employeeId}/{token}", Method.POST);

    request.AddUrlSegment("transactionJson", transactionJson);
    request.AddUrlSegment("employeeId", employeeId);
    request.AddUrlSegment("token", token);

    // Execute the request
    var response = client.Post(request);

Ответ будет "StatusCode: NotFound, Content-Тип: text / html; charset = utf-8, Content-Length: 6097) "

Вот как выглядит строка json:

    {
        "TransactionId":0,
        "DateTime":"2019-11-02T08:29:16.3291335-07:00",
        "Amount":55.0,
        "BusinessId":123456789,
        "CustomerId":null,
        "EmployeeId":1,
        "Orders":"to be assigned to a json orders string"
    }

Это то, что Ordersстрока выглядит так:

    [
        {"Id":0,"Category":"Manicure","Item":"The Deluxe Manicure","Price":22.0,"Time":20},
        {"Id":0,"Category":"Pedicure","Item":"The Deluxe Pedicure","Price":35.0,"Time":35}
    ]

Это построенный transactionJson из отладчика:

    {"TransactionId":0,"DateTime":"2019-11-02T08:53:29.2862602-07:00","Amount":57.0,"BusinessId":123456789,"CustomerId":null,"EmployeeId":1,"Orders":"[{\"Id\":0,\"Category\":\"Manicure\",\"Item\":\"The Deluxe Manicure\",\"Price\":22.0,\"Time\"
...