MAXIMO API 7.6.1用于创建服务请求的POST以编程方式创建空记录,但是POSTMAN中的相同工作

问题描述 投票:3回答:1

我正在尝试使用MAXIMO 7.6.1 API通过POST请求以编程方式在MAXIMO中创建请求。

问题1:

问题是,尽管POST成功完成,即我收到201。

仅创建空记录。

但是使用POSTMAN完成相同的请求后,效果很好。

这是我的程序化实现:

    var jsonData = JsonConvert.SerializeObject(somemodel);
    string MaximoUrl = @"someurl/maxrest/oslc/os/mxapisr";
    WebRequest request = (HttpWebRequest)WebRequest.Create(MaximoUrl);
    request.Headers["authheaderkey"] = "authheadervalue";
    request.Headers["properties"] = "*";
    request.Method = "POST";
    request.ContentType = "application/json";

    using (var RequestStream = new StreamWriter(request.GetRequestStream()))
            {
                RequestStream.Write(jsonData);
            }

            string ResponseResult;

            HttpWebResponse RequestResponse = (HttpWebResponse)request.GetResponse();
            using (var ResponseReader = new StreamReader(RequestResponse.GetResponseStream()))
            {
                ResponseResult = ResponseReader.ReadToEnd();
            }

上面创建了一条记录,但创建了空记录。

邮递员相同:request Headers

Request body

问题2:

[当我在请求网址中包含查询字符串参数时,我收到400错误的请求。同样,在POSTMAN中也可以使用。

此作品:

字符串MaximoUrl = @“ someurl / maxrest / oslc / os / mxapisr”;

这不是:

字符串MaximoUrl = @“ someurl / maxrest / oslc / os / mxapisr?lean = 1”;

我相信这是MAXIMO如何理解请求的问题。

正在发送模型:

public class obj
    {
        public Int64 ticketuid { get; set; }

        public string ticketid { get; set; }

        public string description { get; set; }

        public string reportedby { get; set; }

        public int rc { get; set; }

        public string workt { get; set; }

        public string ownergroup { get; set; }

        public string siteid { get; set; }

        public string reportedemail { get; set; }

        public string affectedemail { get; set; }

        public DateTime? changedate { get; set; }

        public DateTime? affecteddate { get; set; }

        public DateTime? reportdate { get; set; }

        public DateTime? statusdate { get; set; }

        public DateTime? desireddate { get; set; }

        public string description_longdescription { get; set; }

        public string assetnum { get; set; }

        public string location { get; set; }

        public string status { get; set; }

    }
c# .net asp.net-core maximo maximo-anywhere
1个回答
0
投票

使用Maximo REST API在Maximo中创建对象时,请不要忘记使用lean标志。如果不指定此参数,则需要在请求的主体中使用其名称空间来限定每个属性。

没有lean标志的示例:

http://maximohost/maximo/oslc/os/MXASSET

没有精益标记,您需要为每个属性提供名称空间:

 {
        "spi:assetnum": "PUMP01",
        "spi:description": "Some Pump",
        "spi:siteid": "BEDFORD"
 }

并且,如果不提供名称空间限定符,则将得到空记录,因为Maximo将无法使用对象结构的定义来映射请求主体中的任何属性。

此外,请确保在对象结构级别上没有排除要设置的属性。

参考:https://developer.ibm.com/static/site-id/155/maximodev/restguide/Maximo_Nextgen_REST_API.html

© www.soinside.com 2019 - 2024. All rights reserved.