2017-04-11 4 views
0

Http-builder: 0.7.1 | Langue: Groovy | Cadre: SpockPourquoi HTTPBuilder lance-t-il "HttpResponseException: Bad Request"?

Testing Code

import groovyx.net.http.HTTPBuilder 
import spock.lang.Specification 

/** 
* Created by Long Nguyen on 4/11/2017. 
* 
* Chatwork api documentation: http://developer.chatwork.com/ja/index.html 
*/ 
class ChatworkApiSpec extends Specification { 
    // https://api.chatwork.com/v2/contacts 
    def apiRoot = "http://api.chatwork.com/v2" 
    def contactsPath = "/contacts" 
    def apiToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx" 
    def http = new HTTPBuilder(apiRoot) 

    /** 
    * Endpoint: /contacts 
    * You can access the list of users who are in contact with you. 
    */ 
    def "Get your contact list"() { 
     when: 
     def response = http.get(path: contactsPath, headers: ["X-ChatWorkToken": apiToken]) 
     def responseData = response.responseData 
     then: 
     println responseData 
    } 
} 

Il jette toujours au-dessous exception. Je ne sais pas ce que j'avais tort de définir les en-têtes.

(Bien sûr, ce api fonctionne pour moi quand je l'utilise Postman)

Message:

groovyx.net.http.HttpResponseException: Bad Request 

    at groovyx.net.http.HTTPBuilder.defaultFailureHandler(HTTPBuilder.java:652) 
    at groovy.lang.Closure.call(Closure.java:414) 
    at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:508) 
    at groovyx.net.http.HTTPBuilder.get(HTTPBuilder.java:292) 
    at groovyx.net.http.HTTPBuilder.get(HTTPBuilder.java:262) 
    at testcase.ChatworkApiSpec.Get your contact list(ChatworkApiSpec.groovy:24) 

Répondre

0

Désolé ma mauvaise question. Je libère que mon lien de racine a également inclus le chemin dedans.

Remplacer:

def apiRoot = "http://api.chatwork.com/v2" 
def contactsPath = "/contacts" 

par

def apiRoot = "http://api.chatwork.com" 
def contactsPath = "/v2/contacts" 

peut résoudre ce problème.

+1

En tant qu'auteur, vous pouvez toujours supprimer une question. Et c'est ce que je vous recommande de faire. – kriegaex

+0

Peut-être que quelqu'un aura le même problème que moi, je pense que cela aidera beaucoup –

+1

Eh bien, alors vous devriez avoir ajusté le titre au problème réel. Je viens de faire ça pour toi. Le problème n'est pas de définir les en-têtes comme vous l'avez dit. Dès que vous avez assez de réputation pour le faire, veuillez accepter votre propre réponse afin de clôturer la question. Je vous remercie. – kriegaex