Oi pessoal,
galera, estou desenvolvendo um serviço de upload de imagem no photobucket, estou estudando a API deles.
Eu preciso enviar um request HTTP POST para receber uma string (a grosso modo,rs).
Aqui fala mais como autenticar na API para projetos WEB: http://pic.pbsrc.com/dev_help/WebHelpPublic/Content/Getting%20Started/Web%20Authentication.htm
Só que se mando por este método, ele lança uma exceção sempre, esta certo este método ?
private void upload(HttpServletRequest request, HttpServletResponse response) {
try {
String url = "http://api.photobucket.com/login/request";
URL endereco = new URL(url);
HttpURLConnection connection = (HttpURLConnection) endereco.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.connect();
// abre a conexão pra input
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
// le ate o final
StringBuffer newData = new StringBuffer(10000);
String s = "";
while (null != ((s = br.readLine()))) {
newData.append(s);
}
br.close();
System.out.println(new String(newData));
System.out.println(connection.getResponseCode() + " " + connection.getResponseMessage());
} catch (Exception e) {
System.out.println("PHOTOBUCKET - UPLOAD");
System.out.println(e.getMessage());
}
}
Obrigado GUJ.
qual o erro que da? printe o stack trace no catch e cole aqui que fica mais facil
qual a linha que da o erro?
eu não manjo muito dessa API, mas não achei nada de errado, ja a usei e tem algumas diferenças do meu código com o seu mas nada que faça diferença, a exemplo eu deixei o doOutput como true e vc não, mas vc não escreve nada…
outra coisa que eu posso te sugerir é você criar uma servlet retornar qualquer coisa nessa servlet… ai testar acessando ela ao invés da photobucket…
[quote=maior_abandonado]qual o erro que da? printe o stack trace no catch e cole aqui que fica mais facil
qual a linha que da o erro?
eu não manjo muito dessa API, mas não achei nada de errado, ja a usei e tem algumas diferenças do meu código com o seu mas nada que faça diferença, a exemplo eu deixei o doOutput como true e vc não, mas vc não escreve nada…
outra coisa que eu posso te sugerir é você criar uma servlet retornar qualquer coisa nessa servlet… ai testar acessando ela ao invés da photobucket…[/quote]
Então cara é o seguinte, fiz algo bem simples mesmo:
1- Criei um index.jsp com um link ‘Upload’, que chama um servlet ‘PhotoBucket’ lah tem o método :
private void upload(HttpServletRequest request, HttpServletResponse response) {
try {
String url = "http://api.photobucket.com/login/request";
URL endereco = new URL(url);
HttpURLConnection connection = (HttpURLConnection) endereco.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.connect();
// abre a conexão pra input
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
// le ate o final
StringBuffer newData = new StringBuffer(10000);
String s = "";
while (null != ((s = br.readLine()))) {
newData.append(s);
}
br.close();
System.out.println(new String(newData));
System.out.println(connection.getResponseCode() + " " + connection.getResponseMessage());
} catch (Exception e) {
System.out.println("PHOTOBUCKET - UPLOAD");
System.out.println(e.getMessage());
}
}
Que quando executo ele lança a seguinte exceção:
PHOTOBUCKET - UPLOAD
Server returned HTTP response code: 401 for URL: http://api.photobucket.com/login/request
Eu tenho um API KEY e defini um CallBack URL , que seria aonde ele irá retornar o OAuth e etc.
Porém ai eu não passo nem a minha chave de desenvolvedor ou outra coisa qualquer… isso esta muito estranho, mas pelo que li na documentação é assim (até onde entendi…).
então cara… erro 401 acredito que seja algo do tipo “não autorizado”, ou seja, sua solicitação ocorreu com sucesso, o servidor que retornou isso para você… provavelmente você precisa mandar alguma coisa para eles, algo do tipo usuário e senha, sei la
se vc fizer aquilo que eu falei, de criar uma servlet e testar com essa servlet acredito que vai ver funcionar normalmente…
ah, pra printar o stack trace, chame o método printStackTrace do seu objeto da exceção…
[quote=maior_abandonado]então cara… erro 401 acredito que seja algo do tipo “não autorizado”, ou seja, sua solicitação ocorreu com sucesso, o servidor que retornou isso para você… provavelmente você precisa mandar alguma coisa para eles, algo do tipo usuário e senha, sei la
se vc fizer aquilo que eu falei, de criar uma servlet e testar com essa servlet acredito que vai ver funcionar normalmente…
ah, pra printar o stack trace, chame o método printStackTrace do seu objeto da exceção…[/quote]
Então cara, voltou 200 OK, então tah certo.
Agora vou ler de novo a documentação lah,rs.
Valeu brother.