【问题标题】:NOT FOUND using restclient未使用 restclient 找到
【发布时间】:2015-07-02 12:11:40
【问题描述】:

我的请求看起来像这样,但是当我尝试运行这段代码时,我得到了这个错误:

@Grab(group='org.codehaus.groovy.modules.httpbuilder',module='http-builder', version='0.7')

import groovy.json.JsonOutput

import groovy.json.JsonBuilder
import groovyx.net.http.RESTClient
import static groovyx.net.http.ContentType.*
import groovyx.net.http.HttpResponseException


public PaymentSpring() throws Exception {
def username ='test_XXXXXXXXXXXXXXXXXXXX'
def resp
def https = new RESTClient('https://api.paymentspring.com/api/v1')
https.auth.basic(username,'')
def charge= [
    card_owner_name        : 'test tset',
    card_number      : '345829002709133',
    card_exp_month:'12',
    card_exp_year : '2015',
    csc:'999',
    amount:'100.00',
    email_address:'ujdieu@yahoo.com',
    send_receipt   : true
]
 try    {
    resp = https.post(
    path:'/charge',
    requestContentType: URLENC,//request content synchronously for the     "headers"
    headers: ['Content-Type': 'application/x-www-form-urlencoded'],
    body:charge
)

} catch(HttpResponseException ex) {
    println ex
}
  println resp

结果:

groovyx.net.http.HttpResponseException: Not Found
null

【问题讨论】:

    标签: groovy payment-gateway rest-client httpbuilder


    【解决方案1】:

    基本 URI 指定不正确 - 它应该只是主机名 - 没有任何路径。以下脚本有效,但失败并出现 401:

    @Grab(group='org.codehaus.groovy.modules.http-builder',module='http-builder', version='0.7.1')
    @Grab(group='org.slf4j', module='slf4j-log4j12', version='1.7.7')
    @Grab(group='org.slf4j', module='jcl-over-slf4j', version='1.7.7')
    
    import groovy.json.JsonOutput
    import groovyx.net.http.RESTClient
    import groovyx.net.http.HttpResponseException
    import static groovyx.net.http.ContentType.*
    
    
    def username ='test_XXXXXXXXXXXXXXXXXXXX'
    
    def https = new RESTClient('https://api.paymentspring.com/')
    https.auth.basic(username, '')
    
    def charge = [
        card_owner_name  : 'test tset',
        card_number      : '345829002709133',
        card_exp_month   : '12',
        card_exp_year    : '2015',
        csc              : '999',
        amount           : '100.00',
        email_address    : 'ujdieu@yahoo.com',
        send_receipt     : true,
    ]
    
    try {
        def resp = https.post(
            path:'api/v1/charge',
            requestContentType: URLENC,
            headers: ['Content-Type': 'application/x-www-form-urlencoded'],
            body:charge,
        )
    } catch(HttpResponseException e) {
        r = e.response
        println("Success: $r.success")
        println("Status:  $r.status")
        println("Reason:  $r.statusLine.reasonPhrase")
        println("Content: \n${JsonOutput.prettyPrint(JsonOutput.toJson(r.data))}")
    } 
    

    【讨论】:

    • 虽然这确实有效,但您也可以将路径开头的 / 添加到 URI 中,原来的帖子也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    相关资源
    最近更新 更多