Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 物理设备和模拟器上的WebClient出现故障_C#_Windows Phone 7_Post_Oauth_Webclient - Fatal编程技术网

C# 物理设备和模拟器上的WebClient出现故障

C# 物理设备和模拟器上的WebClient出现故障,c#,windows-phone-7,post,oauth,webclient,C#,Windows Phone 7,Post,Oauth,Webclient,更新: 也许只是我不明白oAuth是如何工作的?我试着跑步 手动打开查询,我得到一个400错误 也在那里!只是想确定一下,我在这里构建的URL是否正确 发布URL: 从缓冲区中获取的访问代码,以 1/]&授权类型=授权代码 原职: 我正在构建一个Windows Phone应用程序,它需要使用来自网站的数据。该网站使用oAuth对用户进行身份验证 我使用内置的web浏览器控件发出GET请求来验证用户。官方文档要求URL结构如下: 明白了吗? 客户端\u id=& 重定向\u uri=& 响应类型

更新:

也许只是我不明白oAuth是如何工作的?我试着跑步 手动打开查询,我得到一个400错误 也在那里!只是想确定一下,我在这里构建的URL是否正确

发布URL:

从缓冲区中获取的访问代码,以 1/]&授权类型=授权代码

原职:

我正在构建一个Windows Phone应用程序,它需要使用来自网站的数据。该网站使用oAuth对用户进行身份验证

我使用内置的web浏览器控件发出GET请求来验证用户。官方文档要求URL结构如下:

明白了吗? 客户端\u id=& 重定向\u uri=& 响应类型=代码

我的应用程序的这一部分工作正常。尽管在将授权令牌从服务器交换为访问令牌时,我面临着一些问题。官方文档要求URL结构如下:

邮寄? 客户端\u id=& 客户端\u机密=& 重定向\u uri=& 代码=& 授权类型=授权代码

如果我错了,请纠正我,但据我所知,除非提交表单,否则无法从浏览器发出POST请求。因此,我决定使用WebClient类向服务器提交数据。但是,无论我是在实际设备上还是在Visual studio emulator上运行代码,我始终会收到以下错误:

远程服务器返回错误:NotFound

有人知道下面的代码有什么问题吗?我花了两天5个多小时试图解决这个错误,但似乎没有任何效果

我正在使用的代码:

    WebClient wc = new WebClient();
    wc.UploadStringCompleted += new UploadStringCompletedEventHandler(wc_UploadStringCompleted);

    wc.UploadStringAsync(new Uri(access_token_url), "POST", GetPostParameters());


    void wc_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
    {
        try 
        {
            MessageBox.Show(e.Result);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    string GetPostParameters()
    {
        string data = "";
        data += "client_id="+client_id + "&";
        data += "client_secret=" +client_secret + "&";
        data += "redirect_uri=" + redirect_uri+ "&";
        data += "code=" + App.AccessToken + "&";
        data += "grant_type=authorization_code";
        return data;
    }
有人知道怎么了吗?这让我发疯了,真的很遗憾oauth如此复杂,而现在它是一种如此常用的技术


提前感谢。

您可以尝试对重定向uri变量进行URL编码吗?

谢谢您的回复。我尝试将代码更改为此,但仍然得到完全相同的错误:data+=redirect\u uri=+HttpUtility.urlencodereirect\u uri+&;我刚刚更新了OP,你觉得你可以快速看一下吗?你没有在更新的帖子中编码你的URL。编码的URL应该是http%3A%2F%2Fapps.joel murphy.com%2ffuffer%2Fcode%2Fsuccess.php这里有一些OAuth包装器可以简化整个过程-可能值得使用类似的东西来解决签名问题。我现在检查一下,并很快报告:我在解决方案中添加了OAuthWebRequest类,但是,它包含99个错误,我不知道如何修复:无论如何,谢谢