在RTC上发送到创建工厂的帖子,但获得'GET'响应

时间:2015-08-28 10:37:17

标签: c# asp.net asp.net-web-api rtc oslc

我遇到了一些奇怪的行为,我很确定这与我的代码有关,而不是我正在使用的RTC实例。

我已经设置了Web请求并进行了配置:

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会返回一个票据列表,我只能在某个地方结束我的请求被视为'GET'。

作为测试,我改变了使用PUT而不是POST的请求。这不允许在创建工厂URL上使用,并且在测试中它确实会引发错误。所以我对RTC为什么没有创建我的票证感到非常恼火,而是将我的请求视为GET并返回票证列表。

有人有什么想法吗?

感谢。

0 个答案:

没有答案