小编ali*_*ali的帖子

如何使用Apache HttpClient 4.3处理Cookie

我需要在Java中实现一系列HTTP请求,并决定在4.3版本中使用Apaches HttpClient(最新版本).

问题是所有这些请求都使用cookie进行会话管理,我似乎无法找到访问该cookie并将其从请求传递到请求的方法.我使用curl的命令看起来像:

# Login
curl -c cookies -d "UserName=username&Password=password" "https://example.com/Login"

# Upload a file
curl -b cookies -F fileUpload=@IMG_0013.JPG "https://example.com/File"

# Get results of server processing file
curl -b cookies "https://example.com/File/1234/Content"
Run Code Online (Sandbox Code Playgroud)

他们工作得很好.然而,使用HttpClient似乎无法工作.我试过的是:

    URI serverAddress = new URI("https://example.com/");

    URI loginUri = UriBuilder.fromUri(serverAddress).segment("Login").queryParam("UserName", "username")
            .queryParam("Password", "password").build();

    RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BEST_MATCH).build();
    CookieStore cookieStore = new BasicCookieStore();
    HttpClientContext context = HttpClientContext.create();
    context.setCookieStore(cookieStore);

    CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).setDefaultCookieStore(cookieStore).build();
    HttpGet httpGet = new HttpGet(loginUri);
    CloseableHttpResponse loginResponse = httpClient.execute(httpGet,context);

    System.out.println(context.getCookieStore().getCookies());
Run Code Online (Sandbox Code Playgroud)

最后一行的输出始终为空列表.我认为它应该包含我的Cookie,对吗?

有人可以给我一个关于如何使用Apache HttpClient 4.3处理cookie的小例子吗?

谢谢

java apache cookies curl apache-httpclient-4.x

23
推荐指数
1
解决办法
3万
查看次数

如何获得Lucene 4中Lucene场的所有术语

我正在尝试将我的代码从Lucene 3.4更新到4.1.我发现除了一个以外的变化.我有代码需要迭代一个字段的所有术语值.在Lucene 3.1中,有一个IndexReader#terms()方法提供了一个TermEnum,我可以迭代它.这似乎已经改变了Lucene 4.1,甚至在文档中搜索几个小时后我也无法弄清楚如何.有人可以指点我正确的方向吗?

谢谢.

java lucene api

12
推荐指数
1
解决办法
8148
查看次数

JerseyTest在Jersey 2.13中使用GrizzlyWebTestContainerFactory

我试图让JerseyTest运行使用org.glassfish.jersey.test.grizzly.GrizzlyWebContainerFactory.我已经搜索了互联网,并在一天中的大部分时间里尝试了几件事.这似乎是不可能的,我真的很感激有关如何启动和运行的任何帮助.

我根据Jersey 2文档中的代码创建了一个最小的示例.代码如下:

package test;

import static org.junit.Assert.assertEquals;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.DeploymentContext;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.ServletDeploymentContext;
import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
import org.glassfish.jersey.test.spi.TestContainerException;
import org.glassfish.jersey.test.spi.TestContainerFactory;
import org.junit.Test;

public class DistributedDeploymentTest extends JerseyTest {

@Path("hello")
public static class HelloResource {
    @GET
    public String getHello() {
        return "Hello World!";
    }
}

@Override
protected Application configure() {
    return new ResourceConfig(HelloResource.class);
}

@Override
protected TestContainerFactory getTestContainerFactory() throws TestContainerException {
    return new GrizzlyWebTestContainerFactory();
}

@Override
protected DeploymentContext configureDeployment() {
    return …
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey jersey-2.0 jersey-test-framework

9
推荐指数
1
解决办法
8719
查看次数

如何自动在MySQL中使用JPA生成区分大小写的列

在创建时,如何命令JPA将带有文本内容的MySQL数据库列设置为区分大小写?

java mysql jpa

6
推荐指数
2
解决办法
6041
查看次数

如何在JPA中设置@EmbeddedId的反向引用

有人知道是否可以在JPA中建立反向引用@EmbeddedId.

例如,有一个表格的实体

@Entity
public class Entity1 {
    @Id
    @GeneratedValue
    private String identifier;

    private Entity1 relationToEntity1;
    //Left out the getters and setters for simplicity
}
Run Code Online (Sandbox Code Playgroud)

第二个具有复杂嵌入式Id的实体.第二个实体的一部分是对其父实体的引用.像这样:

@Entity
public class Entity2 {
    @EmbeddedId private Entity2Identifier id;
    //Left out the getters and setters for simplicity.
}

@Embedabble
public class Entity2Identifier {
    private String firstPartOfIdentifier;
    private Entity1 parent;
    //Left out the getters and setters for simplicity.
}
Run Code Online (Sandbox Code Playgroud)

当我尝试通过JPA(Implementation is EclipseLink)将这样的构造保存到数据库时,我得到了几个例外:

Exception [EclipseLink-93] (Eclipse Persistence Services - 1.1.0.r3639-SNAPSHOT): 
org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table …
Run Code Online (Sandbox Code Playgroud)

java jpa eclipselink

5
推荐指数
1
解决办法
4177
查看次数

简单的Hello World Grails表单提交

我是Grails的新手,我想尝试一个非常简单的例子.我应该提交一份表格并在屏幕上显示"Hello World".它由以下控制器组成:

package surface

class SearchController {

 def index() {
    render(view: "search")
 }

 def result() {
    render "Hello World"
 }
}
Run Code Online (Sandbox Code Playgroud)

和一个视图,形式:

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<g:form name="searchform" url="result">
<g:textArea cols="80" rows="30" name="searchfield"/>
<g:actionSubmit value="Ask"/>
</g:form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我点击"询问"时,我收到404错误,但浏览器正确访问"/ surface/search/result".当我直接输入该地址而不使用表格时,"Hello World"正确显示.这可能是一个明智的选择,但我似乎无法找出为什么这不起作用的文档.

grails web

5
推荐指数
1
解决办法
2564
查看次数

并行运行多个JPA事务

我有两个(或更多)Java线程使用JPA从mysql数据库创建,更新和删除实体.为了实现这一点,我有一个PersistenceLayer类创建EntityManager并为我的所有实体提供保存,更新和删除方法,如下所示:

public void saveEntity(Entity entity) {
    manager.getTransaction().begin();
    manager.persist(entity);
    manager.getTransaction().commit();
}

public void saveEntity2(Entity2 entity) {
    manager.getTransaction().begin();
    manager.persist(entity);
    manager.getTransaction().commit();
}
Run Code Online (Sandbox Code Playgroud)

如果一个线程同时进入操作saveEntity和另一个saveEntity2,两者都将尝试从EntityManager获取事务,这将失败.但是我一直认为底层数据库能够管理多个事务,特别是如果两个事务处理不同的行甚至不同的表.当然,我可以同步块,但这意味着一次只能进行一次数据库连接,这种连接不会扩展到创建多个线程的多个用户.

我在这做什么错误的假设?是否可以通过JPA向数据库提交多个事务并让数据库处理并发问题?

java mysql concurrency multithreading jpa

4
推荐指数
1
解决办法
8718
查看次数

如何从 jenkins 登录 git bitbucket 存储库

我在 bitbucket 上有一个 GIT 存储库,我希望我的 Jenkins 服务器能够自动访问它。这只能使用公钥/私钥身份验证。所以我创建了一个密钥对并将公钥上传到了bitbucket。公钥和私钥在我的服务器上运行 jenkins 的 tomcat 用户的 .ssh 文件夹中。当我以该用户身份登录服务器时,我可以克隆我的项目。

但是,我无法让詹金斯从 bitbucket 实际检查代码。它总是说:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

好吧,我认为发生这种情况是因为在通过 ssh 访问存储库时,我需要为我的私钥提供密码,而 jenkins 无法自动执行此操作。我读到可以通过在 .ssh 文件夹中提供一个包含以下内容的配置文件来避免被要求输入密码:

Host bitbucket.org
    IdentityFile ~/.ssh/id_dsa
Run Code Online (Sandbox Code Playgroud)

我这样做了,但是一旦我提供了该文件,我就无法再从 bitbucket 克隆存储库。甚至不是直接从服务器获得与上图相同的错误消息。

有没有人设法使这个设置工作?我还在 stackoverflow 上阅读了以下对我没有用的线程:如何为 hudson / jenkins 设置私有 ssh 密钥以访问 bitbucket?我通过创建一个只运行“whoami”的空测试项目来检查 tomcat 是否真的在用户 tomcat6 下运行。所以我几乎没有解决问题的想法。

git authentication ssh bitbucket jenkins

3
推荐指数
1
解决办法
3766
查看次数

如何通过管道将 Vertx 请求直接流式传输到文件

我正在使用 Vertx。4.0.3 并尝试将请求正文直接流式传输到文件。为此,我使用以下(Kotlin)代码:

router.post("/upload").handler { ctx ->
    val startTime = System.currentTimeMillis()
    val response = ctx.response()
    val request = ctx.request()
    val fs = vertx.fileSystem()

    fs.open("data.bin", OpenOptions()) { res ->
        if (res.succeeded()) {
            val asyncFile = res.result()
            request.pipeTo(asyncFile).onComplete { writeResult ->
                if(writeResult.succeeded()) {
                    response.end("${System.currentTimeMillis() - startTime}")
                } else {
                    response.setStatusCode(500).end(res.cause().stackTraceToString())
                }
            }
        } else {
            response.setStatusCode(500).end(res.cause().stackTraceToString())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是我遇到了一个异常,例如:

java.lang.IllegalStateException: Request has already been read
    at io.vertx.core.http.impl.Http1xServerRequest.checkEnded(Http1xServerRequest.java:628)
    at io.vertx.core.http.impl.Http1xServerRequest.endHandler(Http1xServerRequest.java:334)
    at io.vertx.core.http.impl.Http1xServerRequest.endHandler(Http1xServerRequest.java:60)
    at io.vertx.core.streams.impl.PipeImpl.<init>(PipeImpl.java:35)
    at io.vertx.core.streams.ReadStream.pipeTo(ReadStream.java:119)
    at io.vertx.ext.web.impl.HttpServerRequestWrapper.pipeTo(HttpServerRequestWrapper.java:410)
    at fileupload.AppKt$main$2$1.handle(App.kt:60)
    at fileupload.AppKt$main$2$1.handle(App.kt) …
Run Code Online (Sandbox Code Playgroud)

file-upload http vert.x

2
推荐指数
1
解决办法
1313
查看次数

如何将多值字段添加到SOLR 3服务器的XML语法

我想这是一个简单的问题,但我似乎无法在文档或Solr维基中找到它.

所以,我只需要知道添加多值字段(arr)的语法是什么.

我知道你可以添加任何其他字段

<add>
 <doc>
  <field name="fieldname">fieldvalue</field>
 </doc>
</add>
Run Code Online (Sandbox Code Playgroud)

谢谢.

xml api rest solr

1
推荐指数
1
解决办法
2997
查看次数

Material Design NavigationView是否还与AndroidX不兼容?

我刚刚将我的应用程序从支持库转换为AndroidX。现在一切都可以编译,并且该应用程序成功启动。但是,我的一项活动用途com.google.android.material.navigation.NavigationView似乎仍然取决于旧的支持库。具体来说,如果我查看NavigationView的代码,就会发现对以下类的依赖:

import android.support.annotation.DimenRes;
import android.support.annotation.Dimension;
import android.support.annotation.DrawableRes;
import android.support.annotation.IdRes;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.annotation.StyleRes;
import com.google.android.material.internal.NavigationMenu;
import com.google.android.material.internal.NavigationMenuPresenter;
import com.google.android.material.internal.ScrimInsetsFrameLayout;
import com.google.android.material.internal.ThemeEnforcement;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.AbsSavedState;
import android.support.v4.view.ViewCompat;
import android.support.v4.view.WindowInsetsCompat;
import android.support.v7.content.res.AppCompatResources;
import android.support.v7.view.SupportMenuInflater;
import android.support.v7.view.menu.MenuBuilder;
import android.support.v7.view.menu.MenuItemImpl;
import android.support.v7.widget.TintTypedArray;
Run Code Online (Sandbox Code Playgroud)

在我的应用程序构建gradle中,我依赖于:

implementation "androidx.appcompat:appcompat:1.0.2"
implementation "com.google.android.material:material:1.1.0-alpha01"
Run Code Online (Sandbox Code Playgroud)

由于我使用的是材料设计库的新依赖关系(这也是我的AndroidX迁移指南中给出的依赖关系),因此我期望所有类都具有正确的依赖关系。我在这里错了吗?这还没准备好吗?有人还有我想念的其他见解吗?

dependencies android material-design androidx

1
推荐指数
1
解决办法
1075
查看次数