Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTPclient和Cookie的问题_Java_Android_Apache_Cookies_Httpclient - Fatal编程技术网

Java HTTPclient和Cookie的问题

Java HTTPclient和Cookie的问题,java,android,apache,cookies,httpclient,Java,Android,Apache,Cookies,Httpclient,我目前正在开发一个移动应用程序,它将通过HTTP协议与RESTfull服务器通信。为此,我制作了一个工作代码,并使通信正常工作 为了让服务器识别用户,我想使用cookie(某种会话cookie)。因此,我从以下两个助手方法开始创建HttpClient和上下文(包括我的cookie) 然后,我使用以下(读取功能)连接到服务器。这基本上是通过最后两个helper方法生成客户端和Conext,并执行正常的GET请求。 //连接到restfull服务器并返回返回值(get请求) 私有字符串restful

我目前正在开发一个移动应用程序,它将通过HTTP协议与RESTfull服务器通信。为此,我制作了一个工作代码,并使通信正常工作

为了让服务器识别用户,我想使用cookie(某种会话cookie)。因此,我从以下两个助手方法开始创建HttpClient和上下文(包括我的cookie)

然后,我使用以下(读取功能)连接到服务器。这基本上是通过最后两个helper方法生成客户端和Conext,并执行正常的GET请求。
//连接到restfull服务器并返回返回值(get请求)

私有字符串restfullRead(URI,字符串服务器) { //设置读取HttpRequest所需的不同对象 HttpClient=this.getClient(); HttpGet请求=新建HttpGet(); setURI(uri); HttpContext=this.getHttpContext(服务器); //连接到服务器并读取响应 试一试{ HttpResponse response=client.execute(请求、上下文); reader.close(); } 捕获(例外e){ 返回“”; } 当我将其运行到我的服务器时,我收到以下请求。
获取/info/1http/1.1
主持人:192.168.0.191:8080
连接:保持活动状态


如您所见,这不包括任何cookie。这就是为什么我想知道,为什么请求中没有发送“getHttpContext”中制作的cookie?

此答案将帮助您:

//编辑

1.)您的Android应用程序将其唯一的NFC标记发送到服务器

2.)服务器创建一个新的唯一令牌,并在令牌和NFC标记之间建立一个关系

3.)每当您的应用程序发送请求时,也发送唯一的NFC标记

4.)服务器将检查NFC标记并搜索令牌,现在您的设备已识别

正在发送自定义标头:

HttpGet get = new HttpGet(getURL);
get.addHeader("NFC", "YOUR NFC-TAG");
get.addHeader("Some more header", "more infos");

为什么不向客户端应用程序发送一个唯一的令牌。该令牌标识用户,并将随每个请求一起发送到服务器?可能有点不清楚,代码有点简单-我尝试发送一个名为“X-ANDROID-user”且值为“some name”的cookie,以便服务器运行。当我完成此操作时,我将更改“some name”进入唯一值。您好。感谢您的帮助。我已经阅读了它,它与我尝试做的不同。他正在向服务器发送post请求,并检索发送回的cookie。而我想在我的android应用程序上创建一个新cookie(具有唯一标识符,从NFC标记读取)。我想将此标记作为cookie发送。我真的需要向服务器发送post请求并让服务器设置cookie吗?这就是我正在尝试做的。我甚至制作了Cookide并将其添加到HttpContext中。当我执行请求时,我会告诉它使用此上下文。-但是,标头从未实际发送。您可以发送NFC-标记为GET Parameter或作为Header。GET Parameter应该是清晰的。我将发布一个示例来发送Header。我将在上面编辑帖子嘿。感谢您的帮助,这并没有真正解决问题,但应该可以工作。至少感谢您的帮助,我想我会坚持将它们作为Header字段发送:) private String restfullRead(URI uri, String server) { // Sets up the different objects needed to read a HttpRequest HttpClient client = this.getClient(); HttpGet request = new HttpGet(); request.setURI(uri); HttpContext context = this.getHttpContext(server); // Connects to the server and reads response try { HttpResponse response = client.execute(request, context); reader.close(); } catch (Exception e) { return ""; }
HttpGet get = new HttpGet(getURL);
get.addHeader("NFC", "YOUR NFC-TAG");
get.addHeader("Some more header", "more infos");