- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题,当我使用 Maven 测试我的测试应用程序时,它显示 400 Bad Request
。我使用带有基本身份验证和 grant_type password
的 oauth2。如果我用Postman之类的程序进行身份验证。有用。但如果我添加带有 Http-Headers 的基本身份验证,我会收到错误的请求。
我尝试从 HttpEntity 中删除 HttpHeaders()
对象,然后收到 401 Unauthorized
。我尝试将加密 header 手动放入 HttpHeaders()
对象中,但这也导致了 400 Bad Request
。如果我使用 Postman
执行请求,请选择 POST
作为方法,选择 Basic Auth
作为身份验证,使用用户名、密码、grant_type
作为 Body(JSON) 它可以工作。
这是我的测试类(class) @SpringBootTest 公共(public)类 TestAppApplicationTests {
private RestTemplate restTemplate = new RestTemplate();
@Test
public void testOauthToken(){
String plainCreds = "client:topsecret";
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);
Object oauthRequest = new OauthRequest("Lukas", "test123", "password");
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic "+ base64Creds);
HttpEntity<Object> reqData = new HttpEntity<>(oauthRequest, headers);
ResponseEntity<Object> entity = restTemplate.exchange("http://localhost:8080/oauth/token", HttpMethod.POST,
reqData,
Object.class);
}
}
这是我的OauthRequest
类
@Data
public class OauthRequest {
private String username;
private String password;
private String grant_type;
public OauthRequest(String username, String password, String grant_type){
this.username = username;
this.password = password;
this.grant_type = grant_type;
}
}
我想从服务器获取access_token
和refresh_token
。
编辑:我这里有一个不起作用的存储库,如果您想了解有关代码的更多信息:https://github.com/precodeeu/test-spring-oauth
编辑²:如果我在其中放入原始 json 字符串,它也不起作用。
OauthRequest oauthRequest = new OauthRequest("Lukas", "test123", "password");
String json;
try {
json = mapper.writeValueAsString(oauthRequest);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);
headers.add("Content-Type", "application/json");
HttpEntity<Object> reqData = new HttpEntity<>(json, headers);
ResponseEntity<Object> entity = restTemplate.exchange("http://localhost:8080/oauth/token", HttpMethod.POST,
reqData,
Object.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
编辑³我刚刚注意到,内容类型应该是 Application_form_urlencoded
解决方案:我已经更新了代码并构建了一个 Stringbuilder
@SpringBootTest公共(public)类 TestAppApplicationTests {
private RestTemplate restTemplate = new RestTemplate();
private String UrlEncodedBuilder(List<String[]> list){
String returnString = "";
for(String[] param : list){
returnString+=param[0]+"="+param[1]+"&";
}
return returnString;
}
@Test
public void testOauthToken() {
String plainCreds = "client:topsecret";
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);
List<String[]> formData = new ArrayList();
formData.add(new String[]{"username", "Lukas"});
formData.add(new String[]{"password", "test123"});
formData.add(new String[]{"grant_type", "password"});
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.add("Authorization", "Basic " + base64Creds);
HttpEntity<Object> reqData = new HttpEntity<>(UrlEncodedBuilder(formData), headers);
ResponseEntity<Object> entity = restTemplate.exchange("http://localhost:8080/oauth/token", HttpMethod.POST,
reqData,
Object.class);
}
}
最佳答案
首先,调查您的请求到底是什么样子,并将其与有效的请求进行比较。如果出现 400 代码,还要检查响应正文,正文可能包含一些提示。
关于java - RestTemplate 测试时出现错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54760767/
我的应用程序从一个有 5 个选项卡的选项卡栏 Controller 开始。一开始,第一个出现了它的名字,但其他四个没有名字,直到我点击它们。然后根据用户使用的语言显示名称。如何在选项卡栏出现之前设置选
我有嵌套数组 json 对象(第 1 层、第 2 层和第 3 层)。我的问题是数据表没有出现。任何相关的 CDN 均已导入。该表仅显示部分。我引用了很多网站,但都没有解决我的问题。 之前我使用标准表来
我正在尝试设置要显示的 Parse PFLoginViewController。这是我的一个 View Controller 的类。 import UIKit import Parse import
我遇到了这个问题,我绘制的对象没有出现在 GUI 中。我知道它正在被处理,因为数据被推送到日志文件。但是,图形没有出现。 这是我的一些代码: public static void main(Strin
我有一个树状图,其中包含出现这样的词...... TreeMap occurrence = new TreeMap (); 字符串 = 单词 整数 = 出现次数。 我如何获得最大出现次数 - 整数,
因此,我提示用户输入变量。如果变量小于 0 且大于 10。如果用户输入 10,我想要求用户再次输入数字。我问时间的时候输入4,它说你输入错误。但在第二次尝试时效果很好。例如:如果我输入 25,它会打印
我已经用 css overflow 属性做了一个例子。在这个例子中我遇到了一个溢出滚动的问题。滚动条出现了,但没有工作意味着每当将光标移动到滚动条时,在这个滚动条不活动的时间。我对此一无所知,所以请帮
我现在正在做一个元素。当您单击一个元素时,会出现以下信息,我想知道如何在您单击下一个元素而不重新单击同一元素时使其消失....例如,我的元素中有披萨,我想单击肉披萨看到浇头然后点击奶酪披萨看到浇头和肉
我有一个路由器模块,它将主题与正则表达式进行比较,并将出现的事件与一致的键掩码链接起来。 (它是一个简单的 url 路由过滤,如 symfony http://symfony.com/doc/curr
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource, bo
我在底部有一个带有工具栏的 View ,我正在使用 NavigationLink 导航到该 View 。但是当 View 出现时,工具栏显示得有点太低了。大约半秒钟后,它突然跳到位。它只会在应用程序启
我试图在我的应用程序上为背景音乐添加一个 AVAudioPlayer,我正在主屏幕上启动播放器,尝试在应用程序打开时开始播放但出现意外行为... 它播放并立即不断创建新玩家并播放这些玩家,因此同时播放
这是获取一个数字,获取其阶乘并将其加倍,但是由于基本情况,如果您输入 0,它会给出 2 作为答案,因此为了绕过它,我使用了 if 语句,但收到错误输入“if”时解析错误。如果你们能提供帮助,我真的很感
暂停期间抛出异常 android.os.DeadObjectException 在 android.os.BinderProxy.transactNative( native 方法) 在 androi
我已经为猜词游戏编写了一些代码。它从用户输入中读取字符并在单词中搜索该字符;根据字符是否在单词中,程序返回并控制一些变量。 代码如下: import java.util.Random; import
我是自动化领域的新手。这是我的简单 TestNG 登录代码,当我以 TestNG 身份运行该代码时,它会出现 java.lang.NullPointerException,双击它会突出显示我导航到 U
我是c#程序员,我习惯了c#的封装语法和其他东西。但是现在,由于某些原因,我应该用java写一些东西,我现在正在练习java一天!我要创建一个为我自己创建一个虚拟项目,以便让自己更熟悉 Java 的
我正在使用 Intellij,我的源类是 main.com.coding,我的资源文件是 main.com.testing。我将 spring.xml 文件放入资源文件中。 我的测试类位于 test.
我想要我的tests folder separate到我的应用程序代码。我的项目结构是这样的 myproject/ myproject/ myproject.py moduleon
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 因此,我尝试比较 2 个值,一个
我是一名优秀的程序员,十分优秀!