2015-04-24 13 views
1

我想在我的grails项目中使用垂直响应api。但它给下面的错误grails中的垂直响应api

CODE:

def http = new HTTPBuilder() 

http.request('https://vrapi.verticalresponse.com/',GET, TEXT) { req -> 
    uri.path = 'api/v1/contacts?type=basic' 
    headers.'Authorization' = 'Bearer api_token' 
    headers.'Content-Type'='application/json' 


    print('====================================') 
    response.success = { resp, reader -> 
     assert resp.status == 200 
     println "My response handler got response: ${resp.statusLine}" 
     println "Response length: ${resp.headers.'Content-Length'}" 
     reader // print response reader 
    } 

    // called only for a 404 (not found) status code: 
    response.'404' = { resp -> 
     println 'Not found' 
    } 
} 

错误:

Unauthorized. Stacktrace follows: 
groovyx.net.http.HttpResponseException: Unauthorized 
    at groovyx.net.http.HTTPBuilder.defaultFailureHandler(HTTPBuilder.java:652) 
    at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:508) 
    at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:441) 
    at groovyx.net.http.HTTPBuilder.request(HTTPBuilder.java:417) 
    ... 
+0

你真的发送'api_token',是否正确? – Opal

+0

可能是你在标头中发送错误的api标志(或X-Auth-Token)。'授权'。你有没有尝试过使用[Rest Client Builder Plugin](https://grails.org/plugin/rest-client-builder)。它使调用REST调用非常简单。 –

+0

传递令牌是有效的,我已经测试了它使用邮递员扩展的铬和它的工作没有任何问题 –

回答

0

使用HttpClient代替HTTPBuilder它没有任何问题的工作后。所以我认为问题是与HTTPBuilder

HttpClient client = HttpClientBuilder.create().build(); 
HttpGet request = new HttpGet('http://vrapi.verticalresponse.com/api/v1/contacts?type=basic'); 

// add request header 
request.addHeader("Authorization","Bearer token") 

HttpResponse response = client.execute(request); 

print("Response Code : " 
     + response.getStatusLine().getStatusCode()) 

BufferedReader rd = new BufferedReader(
     new InputStreamReader(response.getEntity().getContent())); 


render rd.readLines()