我发送一个$.getJSON(HTTP GET)请求两次(使用不同的数据),一个接一个(假设我们有request1和request2).我可以在FF和Chrome的开发者工具中看到我有相同的cookie:JSESSIONID=FD0D502635EEB67E3D36203E26CBB59A标题字段.
在服务器端,我尝试获取会话:
HttpSession session = request.getSession();
boolean isSessionNew = session.isNew();
String sessionId = session.getId();
String cookieFromRequestHeader = request.getHeader("cookie");
Run Code Online (Sandbox Code Playgroud)
如果我为两个请求打印这些变量,请求1
:
isSessionNew:true
cookieFromRequestHeader:JSESSIONID = FD0D502635EEB67E3D36203E26CBB59A
session.getId():9212B14094AB92D0F7F10EE21F593E52
请求2:
isSessionNew:true
cookieFromRequestHeader:JSESSIONID = FD0D502635EEB67E3D36203E26CBB59A
session.getId():E8734E413FA3D3FEBD4E38A7BF27BA58
如您所见,服务器在a上为request2清楚地创建了一个新会话request.getSession().但为什么会这样呢?它理论上应该是同步的,并为您提供与第一个请求(首先达到此代码)创建的会话相同的会话.现在,为了确保会话创建已同步,我执行了以下操作:
@Autowired
private ServletContext servletContext;
...
synchronized (servletContext) {
HttpSession session = request.getSession();
boolean isSessionNew = session.isNew();
String sessionId = session.getId();
String cookieFromRequestHeader = request.getHeader("cookie");
}
Run Code Online (Sandbox Code Playgroud)
我得到了同样的结果.
如果我再次发送相同的请求(比如request1'和request2'),我得到,
request1':
isSessionNew:false
cookieFromRequestHeader:JSESSIONID = E8734E413FA3D3FEBD4E38A7BF27BA58 session.getId():E8734E413FA3D3FEBD4E38A7BF27BA58
请求2' :
isSessionNew:false
cookieFromRequestHeader:JSESSIONID = E8734E413FA3D3FEBD4E38A7BF27BA58
session.getId():E8734E413FA3D3FEBD4E38A7BF27BA58 …
按照Google的官方Angular 4.3.2文档,我能够get从本地json文件做一个简单的请求.我想练习从JSON占位符站点点击一个真正的端点,但是我无法确定要在.subscribe()运营商中放置什么.我创建了一个IUser接口来捕获有效负载的字段,但是该行.subscribe(data => {this.users = data})会抛出错误Type 'Object' is not assignable to type 'IUser[]'.处理这个问题的正确方法是什么?看起来非常基本,但我是一个菜鸟.
我的代码如下:
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { IUsers } from './users';
@Component({
selector: 'pm-http',
templateUrl: './http.component.html',
styleUrls: ['./http.component.css']
})
export class HttpComponent implements OnInit {
productUrl = 'https://jsonplaceholder.typicode.com/users';
users: IUsers[];
constructor(private _http: HttpClient) { }
ngOnInit(): void {
this._http.get(this.productUrl).subscribe(data => {this.users = data});
}
}
Run Code Online (Sandbox Code Playgroud) 我意识到仍然可以调用新的Callable Cloud Functions,就像它们是HTTP事件一样,即它们仍然可以在下面进行调用http://us-central1-$projectname.cloudfunctions.net/$functionname.这样做时,我在云功能日志中收到错误消息:
Request has invalid method. GET
Run Code Online (Sandbox Code Playgroud)
这意味着HTTP-GET不起作用,但有没有办法调用这些函数?也许他们正在使用HTTP-CONNECT.
我多次联系Web服务以通过HttpGet和获取JSON字符串DefaultHttpClient.
...
DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = (HttpResponse)defaultHttpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
...
Run Code Online (Sandbox Code Playgroud)
我发现LogCat是打印接口名称:null,每次都执行标签System.outHttpResponse httpResponse = (HttpResponse)defaultHttpClient.execute(httpGet);.
我正确地建立这个http连接HttpGet吗?有不同的方式吗?
如何创建此连接而不是获取接口名称:来自System.out标记的null LogCat消息?
假设我收到的请求如下:
http://www.example.com/index.php?id=123&version=3&id=234&version=4
是否有可能在我的PHP代码中以简单的方式提取这些?我意识到我可以使用window.location.href使用javascript获取整个查询字符串并手动处理它但我正在寻找更优雅的东西.请求可以包含任意数量的版本/ ID对,但我可以假设查询格式正确,并且没有义务处理无效字符串.
我正在使用HttpClient遇到一个奇怪的问题.我正在使用带有HttpPost的DefaultHttpClient().我正在使用HttpGet 100%成功,但现在尝试切换到HttpPost,因为我正在使用的REST API需要POST参数而不是GET.(仅限某些API调用,所以我知道GET调用工作正常,因此它不是API的错误).
此外,我尝试在我写的一个简单的PHP脚本上使用HttpPost查找POST参数'var'并将其回显到屏幕,传递此参数如下工作正常:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
postMethod = new HttpPost("http://www.examplewebsite.com");
nameValuePairs.add(new BasicNameValuePair("var", "lol"));
try {
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpClient.execute(postMethod, responseHandler);
Log.i("RESTMethod", response);
...
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试对API执行相同的调用时(但明显将params更改为API参数),我收到以下错误:
Authentication error: Unable to respond to any of these challenges: {}
Run Code Online (Sandbox Code Playgroud)
我请求的页面是一个HTTPS页面,这可能是问题吗?
但是对API上的原始HTTP页面执行相同类型的POST请求会产生相同的错误,除非我注释掉StringEntity部分然后它运行(但返回xml并且我想传递一个参数来请求JSON中的数据) .
这似乎是一个非常奇怪的问题(非https部分),但无法真正找到任何关于这个问题的帮助,所以很抱歉,如果答案在那里.
有任何想法吗?
提前致谢,
Infinitifzz
编辑:好的,我无处可去所以我想如果我引导你进入API可能会有所帮助,那就是8Tracks API,你可以看到你需要为所有请求传递一个dev键(api_key)而我我坚持使用https来记录用户:http://www.8tracks.com/sessions.xml "part.
希望这会有所帮助因为我走到了尽头.
谢谢,
Infinitifizz
我在GlassFish上使用JSF 2和PrimeFaces 2.1.
我有一个页面,旨在允许人们在关注回调URL后执行操作(例如,作为电子邮件中嵌入的链接或某些外部身份验证或支付服务的回调URL参数).在我的情况下,我需要重置密码.回调URL有一个tokenGET参数,如下所示:
http://example.com/app/resetPasswordForm.jsf?token=abc123
在页面加载时resetPasswordForm.jsf,我需要检查令牌是否有效并重定向到主应用程序屏幕,如果它无效.
我的想法是有一个bean方法,如:
public String resetPasswordHandler.showResetForm(String token) {
if /* token is valid */ {
return "resetPasswordForm.jsf";
} else {
return "main.jsf";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如何在页面加载时使该方法受到影响?
不知道如何进行 - 欢迎提出建议.
我需要从Excel for Mac 2011向Web服务发出带有查询字符串的HTTP Get.我已经看到了使用QueryTables的答案(如何使用VBA从Excel向服务器发送HTTP POST请求?)但是使用POST方法,而不是GET方法.我也看到从Windows机器上很容易,但我被卡在了Mac上.
有什么建议,还是没有希望?
我只是想知道是否有一种非常简单的方法来确定请求是$_POST一个$_GET请求还是一个请求.
这是否Codeigniter有这样的事情?
$this->container->isGet();
Run Code Online (Sandbox Code Playgroud) 我需要让表单发送POST和GET请求(由于IE和iframe中的一些错误),你怎么能这样做?
发送的数据不是很安全,所以如果可以通过GET设置它并不重要,只需要确保它是双向设置的.
谢谢您的帮助!
http-get ×10
http-post ×3
php ×3
android ×2
httpclient ×2
angular ×1
api ×1
codeigniter ×1
excel ×1
excel-vba ×1
firebase ×1
html ×1
httpresponse ×1
https ×1
httpsession ×1
java ×1
jquery ×1
jsf ×1
jsf-2 ×1
logcat ×1
parameters ×1
query-string ×1
request ×1
spring ×1
vba ×1