如何调用API(Oauth 1.0)?

我试图称这个API(Oauth1.0标准):

https://appcenter.intuit.com/api/v1/Connection/Reconnect

我正在做的是:(它正在研究java)

Base64Encoder baseEncoder = Base64Encoder.getInstance(); CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("https://appcenter.intuit.com/api/v1/connection/reconnect"); StringBuilder headerReq = new StringBuilder(); headerReq.append("OAuth "); headerReq.append("oauth_token=\"").append(OAUTHTOKEN).append("\""); headerReq.append(", oauth_consumer_key=\"").append(CUNSUMER_KEY).append("\""); headerReq.append(", oauth_signature_method=\"base64\""); headerReq.append(", oauth_signature=\"") .append(baseEncoder.encode(PropsUtil.get(OAUTH_CONSUMER_SECRET).getBytes())) .append(baseEncoder.encode("&".getBytes())) .append(baseEncoder.encode(symmetricEncrypter.decryptData(OAUTH_TOKEN_SECRET).getBytes())).append("\""); headerReq.append(", oauth_version=\"1.0\""); httpGet.addHeader("Authorization", headerReq.toString()); CloseableHttpResponse response = httpclient.execute(httpGet); try { System.out.println("Responsee::"+ response.getStatusLine()); } 

而且,我得到的回应是:

   This API requires Authorization. 22 

你能否在创建Oauth1.0标准请求时向我建议我缺少什么,或者,任何人都可以提供该标准的Oauth1.0请求示例的示例代码。

非常感谢你。

PFB工作代码。 希望它会有用。

 import java.io.InputStream; import java.io.StringWriter; import java.net.URI; import java.net.URISyntaxException; import oauth.signpost.OAuthConsumer; import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; import oauth.signpost.exception.OAuthCommunicationException; import oauth.signpost.exception.OAuthExpectationFailedException; import oauth.signpost.exception.OAuthMessageSignerException; import oauth.signpost.signature.AuthorizationHeaderSigningStrategy; import org.apache.commons.io.IOUtils; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.impl.client.DefaultHttpClient; import com.intuit.ipp.data.Account; import com.intuit.ipp.exception.FMSException; import com.intuit.ipp.net.MethodType; import com.intuit.ipp.services.DataService; public class POCWithoutDevkitTest { private DataService service; private OAuthConsumer oAuthConsumer; private static String realmID = null; public POCWithoutDevkitTest() { realmID = "122294642099"; String consumerKey = "AAAAA"; String consumerSecret = "BBBBB"; String accessToken = "CCCCC"; String accessTokenSecret = "DDDDD"; setupContext(consumerKey, consumerSecret, accessToken, accessTokenSecret); } public void setupContext(String consumerKey, String consumerSecret, String accessToken, String accessTokenSecret) { this.oAuthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret); oAuthConsumer.setTokenWithSecret(accessToken, accessTokenSecret); oAuthConsumer.setSigningStrategy(new AuthorizationHeaderSigningStrategy()); } public void authorize(HttpRequestBase httpRequest) throws FMSException { try { oAuthConsumer.sign(httpRequest); } catch (OAuthMessageSignerException e) { throw new FMSException(e); } catch (OAuthExpectationFailedException e) { throw new FMSException(e); } catch (OAuthCommunicationException e) { throw new FMSException(e); } } public void executeGetRequest(String customURIString){ DefaultHttpClient client = new DefaultHttpClient(); client.getParams().setParameter("http.protocol.content-charset", "UTF-8"); HttpRequestBase httpRequest = null; URI uri = null; try { uri = new URI(customURIString); } catch (URISyntaxException e) { e.printStackTrace(); } String methodtype = "GET"; if (methodtype.equals(MethodType.GET.toString())) { httpRequest = new HttpGet(uri); } httpRequest.addHeader("content-type", "application/xml"); httpRequest.addHeader("Accept","application/xml"); try { authorize(httpRequest); } catch (FMSException e) { e.printStackTrace(); } HttpResponse httpResponse = null; try { HttpHost target = new HttpHost(uri.getHost(), -1, uri.getScheme()); httpResponse = client.execute(target, httpRequest); System.out.println("Connection status : " + httpResponse.getStatusLine()); InputStream inputStraem = httpResponse.getEntity().getContent(); StringWriter writer = new StringWriter(); IOUtils.copy(inputStraem, writer, "UTF-8"); String output = writer.toString(); System.out.println(output); }catch(Exception e){ e.printStackTrace(); } } public static void main(String args[]) { POCWithoutDevkitTest withoutDevkitClient = new POCWithoutDevkitTest(); withoutDevkitClient.executeGetRequest("https://appcenter.intuit.com/api/v1/connection/reconnect"); } } 

依赖

   org.apache.httpcomponents httpcore 4.3.1   oauth.signpost signpost-core 1.2.1.1   oauth.signpost signpost-commonshttp4 1.2   org.apache.commons commons-io 1.3.2   org.apache.httpcomponents httpmime 4.3.1  

谢谢

当所有密钥都在手中时,这是java中的工作HTTP GET请求代码。 希望它能完成你的工作。

 import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import oauth.signpost.OAuthConsumer; import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; import oauth.signpost.exception.OAuthCommunicationException; import oauth.signpost.exception.OAuthExpectationFailedException; import oauth.signpost.exception.OAuthMessageSignerException; import org.apache.http.*; import org.apache.http.client.*; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.client.methods.*; //HttpHead, HttpPut, HttpGet, etc... import org.apache.http.util.EntityUtils; public class HttpGetRequest { public static void demo() throws IOException { String consumer_key = "bcd"; String consumer_secret = "efg"; String access_token = "rst"; String access_secret= "xzy"; OAuthConsumer consumer = new CommonsHttpOAuthConsumer(consumer_key, consumer_secret); consumer.setTokenWithSecret(access_token, access_secret); String uri = "your url here"; HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(uri); try { consumer.sign(httpget); } catch (OAuthMessageSignerException ex) { Logger.getLogger(HttpRequest.class.getName()).log(Level.SEVERE, null, ex); } catch (OAuthExpectationFailedException ex) { Logger.getLogger(HttpRequest.class.getName()).log(Level.SEVERE, null, ex); } catch (OAuthCommunicationException ex) { Logger.getLogger(HttpRequest.class.getName()).log(Level.SEVERE, null, ex); } HttpResponse response = httpclient.execute(httpget); System.out.println(response.getStatusLine().toString()); HttpEntity entity = response.getEntity(); System.out.println(); System.out.println(EntityUtils.toString(entity)); } public static void main(String[] args) { try { demo(); } catch(IOException ioe) { System.out.println(ioe); } } }