Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

192
Visualizações
¿Cómo iniciar sesión en wikipedia usando la API de mediawiki?

Ya tengo dos bots en funcionamiento en Wikipedia, pero usan un método diferente. Actualmente, estoy tratando de crear un bot usando C#. En la página de documentación de la API, han proporcionado algunos códigos de muestra en java, PHP y python. Pero desafortunadamente, no han proporcionado ningún código de muestra en C#. Es el único idioma que conozco.

Esta es la API de Wikimedia: Editar página de documentación. ¿Alguien amablemente convertiría las pocas palabras de java (o cualquier otro idioma) a C#?

Si pudiera convertir solo este código a C#, podría construir el resto del bot por mí mismo. Pedí ayuda en los tablones de anuncios relevantes en los sitios de wikimedia, pero nadie allí está familiarizado con C#. Es por eso que ahora estoy preguntando esto fuera de wikipedia.

Muchas gracias por adelantado

Este es el código fuente de Java:

 ``` /* edit.js MediaWiki API Demos Demo of `Login` module: Sending post request to login MIT license */ var request = require( 'request' ).defaults( { jar: true } ), url = 'https://test.wikipedia.org/w/api.php'; // Step 1: GET request to fetch login token function getLoginToken() { var params = { action: 'query', meta: 'tokens', type: 'login', format: 'json' }; request.get( { url: url, qs: params }, function ( error, res, body ) { var data; if ( error ) { return; } data = JSON.parse( body ); loginRequest( data.query.tokens.logintoken ); } ); } // Step 2: POST request to log in. // Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword function loginRequest( loginToken ) { var params = { action: 'login', lgname: 'bot_username', lgpassword: 'bot_password', lgtoken: loginToken, format: 'json' }; request.post( { url: url, form: params }, function ( error, res, body ) { if ( error ) { return; } console.log( body ); } ); } // Start From Step 1 getLoginToken();

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No puedo profundizar tanto, pero espero que puedas echar un vistazo a esta página y descubrir cómo hacerlo.

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=net-6.0

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes intentar algo como esto

 private static async Task LoginRequest(string loginToken) { var data = new { action = "login", lgname = "bot_username", lgpassword = "bot_password", lgtoken = loginToken, format = "json" }; using (var client = new HttpClient()) using (var response = await client.PostAsJsonAsync(LOGIN_URL, data)) { var responseString = await response.Content.ReadAsStringAsync(); var responseObject = JsonConvert.DeserializeObject<JObject>(responseString); Console.WriteLine(responseObject); } } private static async Task<string?> GetLoginToken() { var url = $"{LOGIN_URL}?action=query&meta=tokens&type=login&format=json"; using (var client = new HttpClient()) using (var response = await client.GetAsync(url)) { var responseString = await response.Content.ReadAsStringAsync(); var responseObject = JsonConvert.DeserializeObject<JObject>(responseString); return responseObject?["query"]?["tokens"]?["logintoken"]?.ToString(); } }

Para convertir la respuesta que necesita

 using Newtonsoft.Json; using Newtonsoft.Json.Linq;

Puede llamar a estos métodos desde su método Main de esta manera:

 const string LOGIN_URL = "https://test.wikipedia.org/w/api.php"; public static async Task Main() { var loginToken = await GetLoginToken(); await LoginRequest(loginToken ?? throw new Exception("No login token.")); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda