我正在尝试使用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();
}
上面创建了一条记录,但创建了空记录。
问题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; }
}
使用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