我正在从GWT客户端向HTTPServlet发出HTTP POST请求.此Servlet正在从请求内容创建PDF文件并将其写入响应流.
响应流的标头是:
Content-Disposition: attachment; filename=report.pdf
Run Code Online (Sandbox Code Playgroud)
我想在用户浏览器的新窗口中打开此PDF或提示他下载它.
import com.google.gwt.http.client.*;
...
String url = "http://www.myserver.com/getData?type=3";
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url));
try {
Request request = builder.sendRequest(data, new RequestCallback() {
public void onError(Request request, Throwable exception) {
// Couldn't connect to server (could be timeout, SOP violation, etc.)
}
public void onResponseReceived(Request request, Response response) {
if (200 == response.getStatusCode()) {
// Process the response in response.getText()
// Window.open(url, "_blank", "");
} else {
// Handle the error. Can get the …Run Code Online (Sandbox Code Playgroud) 我们如何仅捕获gmail API的api响应中的电子邮件地址。该
fields参数设置为payload/headers,其回报方式更多的数据比我们需要的响应。我们需要的只是JSON响应中的value一name/value对。例如
完整的响应现在看起来像这样
{
"payload": {
"headers": [
{
"name": "Delivered-To",
"value": "xxxxxxx"
{
"name": "Received",
"value": "xxxxxxxx"
},
{
"name": "Received-SPF",
"value": "----"
},......
{
"name": "To",
"value": "xxxxxxx"
}, ...... E.T.C........E.T.C ......
/*All we want is one name/value pair to be returned e.g. */
{
"payload": {
"headers": [
{
"name": "X-Failed-Recipients",
"value": "............."
}
]
}
Run Code Online (Sandbox Code Playgroud)
一个更好的问题可能是,是否有比通过gmail API更好的方法来捕获退回/退回的邮件?
另外,是否可以请求XML响应而不是JSON。gmail API该怎么做?
谢谢 !!
如果html.erb文件被渲染,而不在控制器分配变量(例如@user = params["user_name"] )那么为什么它查看@user作为nil投掷代替NameError: undefined local variable.
例如:
<%= render partial: "greeting", locals: { user: @user } if @user %>
Run Code Online (Sandbox Code Playgroud)
这将在控制器传递问候时呈现问候语@user,但如果页面是第一次呈现并且用户尚未输入其用户名,则问候语将不会出现,而不是导致错误.在我看来,@user永远不会在html.erb执行的本地范围内声明,因此它应该导致错误.
这里发生了什么事?也许以@某种方式预处理意味着将变量视为符号并将其用作params哈希中的键并返回结果?
我试图用scala 2.8解决Project Euler 7号问题
我实施的第一个解决方案需要大约8秒钟
def problem_7:Int = {
var num = 17;
var primes = new ArrayBuffer[Int]();
primes += 2
primes += 3
primes += 5
primes += 7
primes += 11
primes += 13
while (primes.size < 10001){
if (isPrime(num, primes)) primes += num
if (isPrime(num+2, primes)) primes += num+2
num += 6
}
return primes.last;
}
def isPrime(num:Int, primes:ArrayBuffer[Int]):Boolean = {
// if n == 2 return false;
// if n == 3 return false;
var r …Run Code Online (Sandbox Code Playgroud)