团结会破坏我的http数据包吗?

时间:2016-10-31 11:08:17

标签: c# http authentication unity3d webrequest

我正在尝试在Unity中构建一个连接到服务器以检索受保护资源的应用程序。  我有一些.net代码,它在标准的Windows应用程序中运行良好,但统一的相同代码总是会出现以下错误:远程服务器返回错误:(400)错误的请求。  这告诉我Unity正在对我的服务器不喜欢的HTTP请求做些什么。

我正在使用.net WebClient类,我的第一个想法当然是.net版本的差异。  但是,当我在.net 2.0中编译我的Windows应用程序时,它仍然完美无缺。

我可以在Unity中完美地检索未受保护的资源。当我尝试获取受保护的资源时,问题总是在身份验证之后。验证似乎很顺利,但在请求受保护的资源时,我得到了错误的请求。也许Unity搞砸了我的身份验证请求?  (我只是在我发布用户名和密码时进行基本身份验证。)

我已经尝试过WWW和UnityWebrequest类但它们肯定不会进行身份验证,因为返回的错误消息是我需要进行身份验证。我目前正在使用WireShark查看数据包以查找线索,但还没有。我也试过把它放到dll中。文件并从Unity调用它,但同样的事情发生,这使我想到甚至比团结做一些奇怪的事情。

如果有人可以为我推荐一些东西,我会非常感激!  (如果有帮助的话,我正在尝试访问IBM的Jazz Team Server)

这是我正在使用的代码  webclientextension基本上是扩展为保存cookie的标准.net Web客户端。

WebClientExtension webClient = new WebClientExtension_();      

//Do a call to start the session
var Request1 = webClient.DownloadString(SessionStartURL);

//set username and password
var data = new NameValueCollection

{
   { "j_username", "MyUsername" },
   { "j_password", "MyPassword" },
};

//Post credentials to authentication URL
var Request2 = webClient.UploadValues("ServerAuthenticationURL", data);

//Request the protected resources (Works perfectly well in a standard windows application
var Request3 = webClient.DownloadString("URL_of_protected_resources");  
//THIS CAUSES THE BAD REQUEST ERROR

如果它包含任何相关线索,这是webclientextension类。

public class WebClientExtension : WebClient 
{    
//cookie container
private CookieContainer _ckContainer = new CookieContainer();

//request server
protected override WebRequest GetWebRequest(Uri _url)
    { 
    WebRequest _request = base.GetWebRequest(_url);
        if (_request is HttpWebRequest)

        {
            (_request as HttpWebRequest).CookieContainer = _ckContainer;
            (_request as HttpWebRequest).Accept = "application/rdf+xml";
        }   
          _request.Headers.Add("OSLC-Core-Version: 2.0");
          _request.Timeout = 3600000;
          return _request;
     }    
}

0 个答案:

没有答案