我遇到了一些奇怪的行为,我很确定这与我的代码有关,而不是与我正在使用的 RTC 实例有关。
我有一个网络请求设置和配置:
var cookies = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(getCreationFactoryUri);
var xmlString = getRDF.ToString();
request.CookieContainer = cookies;
request.Accept = "application/rdf+xml";
request.Method = "POST";
request.ContentType = "application/rdf+xml";
request.Headers.Add("OSLC-Core-Version", "2.0");
request.Timeout = 40000;
request.KeepAlive = true;
byte[] bytes = Encoding.ASCII.GetBytes(xmlString);
request.ContentLength = bytes.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(bytes, 0, bytes.Length);
dataStream.Close();
这将传递给基于 RTC 示例编写的另一个方法,该示例使用 RTC 的表单身份验证。
在 OSLC v2 规范下,我使用创建工厂 URL 发布到。我知道 URL 很好,因为我已经在 Firefox 中使用 RESTClient 设置了一个调用。添加了所需的标头(Content-Type:application/rdf+xml,Accept:application/rdf+xml,OSLC-Core-Version:2.0)并使用了我的代码试图传递的生成的 XML。我的手动呼叫运行良好,并且创建了票证。
在我的日志中,我捕获了来自 RTC 的响应,这是一个工单列表,而不是显示我的工单已创建的响应。我可以通过对用于创建事件票的创建工厂 URL 执行 GET 来重新创建此行为。
因此,尽管我知道我正在向创建工厂发送 POST(我进行了调试以检查我的 Web 请求方法是否 100% 设置为“POST”),但 RTC 却返回了一个工单列表,我只能在某个地方得出结论,我的请求得到了处理作为“获取”。
作为测试,我将请求更改为使用 PUT 而不是 POST。这不允许在创建工厂 URL 上使用,并且在测试时确实会引发错误。所以我完全不明白为什么 RTC 不创建我的票,而是将我的请求视为 GET 并返回一张票列表。
有人有想法么?
谢谢。