- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请注意:使用下面的代码/信息,可以在 2-3 分钟内重现此问题。
背景:首先,我还没有找到一个插件来帮助使用 Paypal 高级界面(他们在“标准”和“专业”之间的中级解决方案),但是如果我不需要推出自己的 HTTPBuilder 和其他界面代码我绝对赞成。
现在,我可以缩小 HTTPBuilder 问题的范围,使 curl 命令在 DOS 提示符下使用正确的 URL 工作;我只是无法让它与 groovy 的 HTTPBuilder 一起工作。
因此,可以轻松尝试的方法是:
c:\groovy\ex>curl https://pilot-payflowpro.paypal.com
curl: (52) Empty reply from server
c:\groovy\ex>curl https://pilot-payflowpro.paypal.com -kd "PARTNER=PayPal&VENDOR=ROAdvanced&USER=ROAdvanced&PWD=joespizza1&TRXTYPE=S&MODE=TEST&AMT=40&CREATESECURETOKEN=Y&SECURETOKENID=12528208de1413abc3d60c86233"
RESULT=0&SECURETOKEN=15XTWEZtFlkeNqtWCBZHSTgcs&SECURETOKENID=12528208de1413abc3d60c86233&RESPMSG=Approved
OR you'll get a result like the following, but either result is good, since Paypal is sending a response in both cases!
RESULT=7&SECURETOKENID=12528208de1413abc3d60c86233&RESPMSG=Field format error: Secure Token Id already been used
Class: org.apache.http.NoHttpResponseException
Message: The target server failed to respond
http.request(GET, ContentType.ANY) {
package apps
import grails.converters.*
import org.codehaus.groovy.grails.web.json.*; // package containing JSONObject, JSONArray,...
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*
import javax.net.ssl.X509TrustManager
import javax.net.ssl.SSLContext
import java.security.cert.X509Certificate
import javax.net.ssl.TrustManager
import java.security.SecureRandom
import org.apache.http.conn.ssl.SSLSocketFactory
import org.apache.http.conn.scheme.Scheme
import org.apache.http.conn.scheme.SchemeRegistry
import org.apache.http.conn.ssl.X509HostnameVerifier
class PaypalController {
def index() {
def paypalUrl = "https://pilot-payflowpro.paypal.com?PARTNER=PayPal&VENDOR=ROAdvanced&USER=ROAdvanced&PWD=joespizza1&TRXTYPE=S&MODE=TEST&AMT=40&CREATESECURETOKEN=Y&SECURETOKENID=12528208de1413abc3d60c86cdr87"
//def paypalUrl = "https://pilot-payflowpro.paypal.com"
println "Making new http Builder with paypalURL ..."
def http = new HTTPBuilder(paypalUrl)
println "Now setting timeouts ..."
http.getClient().getParams().setParameter("http.connection.timeout", new Integer(12000))
http.getClient().getParams().setParameter("http.socket.timeout", new Integer(30000))
//=== SSL UNSECURE CERTIFICATE ===
println "Don't know if needed, but since timeouts don't work to get a response, setting up SSL bypass"
def sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, [new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {null }
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
}] as TrustManager[], new SecureRandom())
//SSLSocketFactory sf = new org.apache.http.conn.ssl.SSLSocketFactory(sslContext, org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
SSLSocketFactory sf = new org.apache.http.conn.ssl.SSLSocketFactory(sslContext)
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
def httpsScheme = new Scheme("https", sf, 443)
http.client.connectionManager.schemeRegistry.register(httpsScheme)
println "Now doing the get"
// perform a GET request, expecting JSON response data
try {
http.request(GET, ContentType.ANY) {
println "Issued the get waiting for the response"
// Sleeping doesn't help
//Thread.sleep(2000)
// println "Done sleeping, looking to process success"
response.success = { resp, any ->
println "in success code"
println "My response handler got response: ${resp.statusLine}"
println "Response length: ${resp.headers.'Content-Length'}"
assert resp.status == 200
def result = any.results;
render(view: "index", model: [message: "Request sent", result: result]);
}
println "past the success code"
}//end of request
} catch (groovyx.net.http.HttpResponseException ex) {
println "Had response exception ...."
ex.printStackTrace()
return null
} catch (java.net.ConnectException ex) {
println "Had connection exception ...."
ex.printStackTrace()
return null
}
finally {
http.shutdown()
}
}//end of method
def fail() {}
def success() {}
Making new http Builder with paypalURL ...
Now setting timeouts ...
Don't know if needed, but since timeouts don't work to get a response, setting up SSL bypass
Now doing the get
Issued the get waiting for the response
past the success code
| Error 2013-07-19 13:27:32,301 [http-bio-8080-exec-10] ERROR errors.GrailsExceptionResolver - NoHttpResponseException occurred when processing request: [GET] /apps/paypal/index
The target server failed to respond. Stacktrace follows:
Message: The target server failed to respond
Line | Method
->> 101 | parseHead in org.apache.http.impl.conn.DefaultResponseParser
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 210 | parse in org.apache.http.impl.io.AbstractMessageParser
| 271 | receiveResponseHeader in org.apache.http.impl.AbstractHttpClientConnection
| 233 | receiveResponseHeader in org.apache.http.impl.conn.DefaultClientConnection
| 209 | receiveResponseHeader in org.apache.http.impl.conn.AbstractClientConnAdapter
| 292 | doReceiveResponse in org.apache.http.protocol.HttpRequestExecutor
| 126 | execute . . . . . . . in ''
| 483 | execute in org.apache.http.impl.client.DefaultRequestDirector
| 641 | execute . . . . . . . in org.apache.http.impl.client.AbstractHttpClient
| 576 | execute in ''
| 477 | doRequest . . . . . . in groovyx.net.http.HTTPBuilder
| 441 | doRequest in ''
| 390 | request . . . . . . . in ''
| 56 | index in apps.PaypalController$$EOC4TiIi
| 195 | doFilter . . . . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 886 | runTask . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run in ''
^ 619 | run . . . . . . . . . in java.lang.Thread
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
compile('org.codehaus.groovy.modules.http-builder:http-builder:0.5.2') {
excludes "commons-logging", "xml-apis", "groovy"
}
org.apache.http.NoHttpResponseException, Message: The target server failed to respond
class PaypalController {
def index() {
def paypalUrl = "https://pilot-payflowpro.paypal.com?PARTNER=PayPal&VENDOR=ROAdvanced&USER=ROAdvanced&PWD=joespizza1&TRXTYPE=S&MODE=TEST&AMT=40&CREATESECURETOKEN=Y&SECURETOKENID=12528208de1413abc3d60c86cdr87"
println "Making new http Builder with paypalURL ..."
def http = new HTTPBuilder(paypalUrl)
println "Now doing the post as a request per example"
// perform a GET request, expecting JSON response data
try {
http.request(POST) {
body = [ status : 'update!' , source : 'httpbuilder' ]
requestContentType = ContentType.URLENC
println "Issued the post waiting for the response"
response.success = { resp ->
println "in success code"
println "My response handler got response: ${resp.statusLine}"
println "Response length: ${resp.headers.'Content-Length'}"
assert resp.status == 200
//def result = any.results;
render(view: "index", model: [message: "Request sent", result: result]);
}
println "past the success code"
}//end of request
} catch (groovyx.net.http.HttpResponseException ex) {
println "Had response exception ...."
ex.printStackTrace()
return null
} catch (java.net.ConnectException ex) {
println "Had connection exception ...."
ex.printStackTrace()
return null
}
finally {
http.shutdown()
}
}//end of method
def fail() {}
def success() {}
}
最佳答案
发现您的问题:curl -d
不是 GET 而是 POST 请求。如果您在 curl 请求中省略 -d ,您将遇到与您的 groovy 相同的问题...
试试这个时髦的代码:
def url = new URL("https://pilot-payflowpro.paypal.com")
def body= "PARTNER=PayPal&VENDOR=ROAdvanced&USER=ROAdvanced&PWD=..."
def connection = url.openConnection()
connection.setRequestMethod("POST")
connection.doOutput = true
def writer = new OutputStreamWriter(connection.outputStream)
writer.write(body)
writer.flush()
writer.close()
connection.connect()
def response = connection.content.text
关于grails - groovy/grails - 无法使 HTTPBuilder 与 URL 一起工作(由 Paypal 提供),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755105/
假设我拥有域 mydomain.com,并且我在服务器上有一个 Web 应用程序,网址为 http://99.99.99.99:1234/MyApplication/startpage.somethi
我正在尝试通过以下方式更新已解析的 URL: u, _ := url.Parse(s) if u.Scheme == "" { u.Scheme = "https" } if u.Path =
如何将 www.somesite.com/api(.*) 映射到 www.somesite.com/$1:9000? (我需要将/api 映射到运行 @ 端口 9000 的 Play 框架应用程序)
我有一个资源结构,如航类 > 座位 > 预订,所以预订属于某个航类的某个座位: http://example.com/jdf_3prGPS4/1/jMBDy46PbNc
我想知道以下网址是否有效。 路径中的点,在主机之后: http://www.example.com/v.b.w..com 主机中的点,作为子域的一部分: http://v.b.w..co.manufa
我有两个域 - crmpicco.co.uk 和 ayrshireminis.com - 如果我浏览到: www.crmpicco.co.uk/mini/new我希望能够重定向到 www.ayrshi
我正在尝试使用 URL 重写和应用程序请求路由来重写到外部 URL。我设置了以下规则: 在规则中,“patternToMatch”是我试
我已经安装了带有 SharePoint 和 Url Rewrite 模块的 IIS 7.0。 是以下句子还是我配置错误才能看到这个结果? Url Redirect 可以将 url 重定向到任何内部(在
我想知道,为了获得良好的 SEO,您必须在 URL 中使用自然语言。您知道字符中单词或短语的最大大小吗?例如: www.me.com/this-is-a-really-long-url.htm 我问这
有人知道在 SEO 友好 URL 中使用逗号有什么问题吗?我正在使用一些在其 SEO 友好 URL 中使用大量逗号的软件;但我 100% 肯定我见过一些程序/平台无法正确识别 URL 并在第一个逗号后
我有一个网站,我正在为所有链接使用干净的 URL。我想知道对于简短的基本 URL 与较长的描述性 URL 有何看法。 例如,如果我的网站是关于 Georgia Bulldog 足球新闻的,那么哪个网站
我正在编写一个类似于 tinyurl 的 URL 缩短器,我想知道如何跟踪已经使用我的服务缩短的 URL?例如,tinyurl 为相同的长 URL 生成相同的小 URL,而不管是谁创建的。如
我是 magento 的新手。我正在开发一个模块。为此,我有一些要显示链接的 css 和 js 文件。我目前有类似 的链接 getSkinUrl('module_tryouts/css/jquery.
我想基于 HTTP_URL 重写 URL 以重定向到不同的端口,同时保留其余的 URL 和查询字符串(如果指定)。例如, http://host/john/page.aspx 应该重定向到 http:
我遇到了以下问题: 我的 Grails (2.2.0) 应用程序具有以下 URL 映射: "/api/clientQuote/$labcode/$cliCode/$quoCode"(controlle
我有一个很长的 URL,它不适合 URL 字段。它一直在修剪。该怎么办?有没有办法增加 SharePoint 2010 中的 URL 字段字符限制? 或者解决方法来容纳长 URL。例如,以下 URL
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我正在编写一些文档,但遇到了一些词汇问题: http://www.example.com/en/public/img/logo.gif 被称为“绝对”网址,对吗? ../../public/img/l
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我是一名优秀的程序员,十分优秀!