Как создать gist на github с базовой аутентификацией в C#


Я использую C# .net 4.0 и хотел бы создать общедоступный gist с моим именем пользователя и паролем (используя базовую аутентификацию) на github. http://developer.github.com/v3/auth/#basic-authentication

Если я использую правильный пароль, я получаю ответ: The remote server returned an error: (404) Not Found.

Если я использую неправильный пароль, я получаю ответ: The remote server returned an error: (401) Unauthorized.

Как я могу аутентифицировать и опубликовать публичную суть под своим именем пользователя?

Http://developer.github.com/v3/gists/#create-a-gist . json Я пытаюсь послать:

{
    "description": "the description for this gist",
    "public": true,
    "files": {
        "file1.txt": {
            "content": "my new content "
        }
    }
}

C# .NET 4.0 code

private void button_createGist_Click(object sender, EventArgs e)
    {
        String jsonMessage = "{ "description": "the description for this gist",  "public": true,"
                   + ""files": {   "file1.txt": {"
                   + ""content":"my new content "  } }}";

        String _url = "https://api.github.com/gists/";

        HttpWebRequest req = WebRequest.Create(new Uri(_url)) as HttpWebRequest;

        String userName = "myUserName";
        String userPassword = "pass123";  
        string authInfo = userName + ":" + userPassword;
        authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));

        req.Method = "POST";
        req.ContentType = "application/json";
        // req.Headers.Add(string.Format("Authorization: token {0}", oauthToken));
         //req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(username + ":" + password)));
        req.Headers.Add("Authorization", "Basic " + authInfo);
        StreamWriter writer = new StreamWriter(req.GetRequestStream());

        System.Diagnostics.Debug.WriteLine(jsonMessage);
        writer.Write(jsonMessage);
        writer.Close();

        string result = null;
        using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)//Exception here
        {
            StreamReader reader =
                new StreamReader(resp.GetResponseStream());
            result = reader.ReadToEnd();
            System.Diagnostics.Debug.WriteLine(result);
        }
    }
1 3

1 ответ:

Я буду держать полный пример онлайн. Опубликованный пример в вопросе должен работать, если вы изменение

String _url = "https://api.github.com/gists/";

К

String _url = "https://api.github.com/gists";

Используйте /gists вместо /gists/