gpt4 book ai didi

java - Android 应用程序中 Spring RestTemplate 的奇怪问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:42 26 4
gpt4 key购买 nike

我开始在我的 android 客户端应用程序中使用 Spring Framework 的 RESTful api。但是当我尝试通过 postForObject/postForEntity 方法执行 HTTP 请求时遇到了问题。这是我的代码:

public String _URL = "https://someservice/mobile/login";
public void BeginAuthorization(View view)
{
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> _entity = new HttpEntity<String>(requestHeaders);
RestTemplate templ = new RestTemplate();
templ.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
templ.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
ResponseEntity<String> _response = templ.postForEntity(_URL,_entity,String.class); //HERE APP CRASHES
String _body = _response.getBody();

所以问题是我做错了什么?如何解决这个问题?还有其他方法吗?

我真的需要帮助。提前致谢!

最佳答案

我认为您的应用目标是 Android 4.0-4.2。然后你必须在后台执行所有操作,而不是主 (UI) 线程。如我所见,您正在执行授权过程。这是一个简短的操作,因此您最好为此使用 AsyncTask。这是在 androidDevelopers 上的操作方法:

http://developer.android.com/reference/android/os/AsyncTask.html

您应该以这种方式覆盖 doInBackground(Params...):

class LoginTask extends AsyncTask<String,Void,Void>
{
@Override
protected Void doInBackground(String... params) {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> _entity = new HttpEntity<String>(requestHeaders);
RestTemplate templ = new RestTemplate();
templ.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
templ.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
ResponseEntity<String> _response = templ.postForEntity(params[0],_entity,null) //null here in order there wasn't http converter errors because response type String and [text/html] for JSON are not compatible;
String _body = _response.getBody();
return null;
}
}

然后在您的 BeginAuthorization(View view) 中调用它:

new LoginTask().execute(URL);

附言此外,如果您编写 Java,请使用正确的命名约定。而不是这个 _response 请写 response

关于java - Android 应用程序中 Spring RestTemplate 的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com