gpt4 book ai didi

php - HttpURLConnection setRequestMethod 无法正常工作

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:57 28 4
gpt4 key购买 nike

我正在尝试使用由 Laravel 4 制作的 API rest,但是当我尝试创建新资源(store,POST 方法)时,我得到了 index 的响应> 函数(GET 方法)。

我不知道我的代码发生了什么:

public static String sendInfo(HashMap<String, String> headers) {
URL url;
HttpURLConnection urlConnection = null;
StringBuilder stringBuilder = new StringBuilder();
try {
url = new URL(headers.get("URL"));

urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod(headers.get("method"));

// Loop hashmap and apply headers
for (HashMap.Entry<String, String> entry : headers.entrySet()) {
// I only need the headers with real information. URL and method headers are only for the setRequestMethod and the object URL.
if (!entry.getKey().equals("URL") && !entry.getKey().equals("method")) {
urlConnection.addRequestProperty(entry.getKey(), entry.getValue());
}
}
if (urlConnection.getResponseCode() == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
reader.close();
} else {
Log.d("sendInfo", "ERROR " + headers.get("URL") + " STATE: " + urlConnection.getResponseCode());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
urlConnection.disconnect();

} catch (Exception e) {
e.printStackTrace();
Log.d("sendInfo", "ERROR DISCONNECT: " + e.getLocalizedMessage());
}
}
Log.d("RESPONSE", "SERVER RESPONSE: "+stringBuilder.toString());

return stringBuilder.toString();
}

我调用这个方法如下:

HashMap<String, String> headers = new HashMap<String, String>();
headers.put("URL", "http://foo.com/api/person/");
headers.put("method", "POST");
headers.put("name", "Jason");
headers.put("lastname", "Harrison");
sendInfo(headers);

但是我没有进入我的 Laravel 资源的 store 函数,而是得到了 index 函数的响应。

我将这段代码放在我的 index 中以检查 http 方法:

dd("Index: ".$_SERVER['REQUEST_METHOD']);

并返回“GET”,所以我的代码有问题 。一切都适用于 PUTGET http 方法,只有 POST 才会失败

我确认空体不是问题,因为我尝试这样做。

有人可以试试我的代码吗?

我完全绝望了。我只问你,测试我的代码并指导我正确的方向,请...

最佳答案

你应该看看retrofit .这个库将使您的 api 调用更加清晰,并避免您在 HttpURLConnection 之上构建请求时遇到的所有问题。

编辑:如果您想自己提出请求,请查看 this邮政。这个问题和你的很相似。看来您需要在请求正文中发送数据。顺便说一句,通过 header 发送参数不是一个好方法。我认为可能会有一些长度限制,而且您可能会遇到一些编码问题。

header 应用于与 http 相关的信息或仅用于 token 。你应该使用 body 来发送你的数据。大部分时间使用 json/xml 或 httpurlencoded 参数发送数据。

编辑 2:

我用 wamp 服务器尝试了与您完全相同的代码,$_SERVER['REQUEST_METHOD'] 返回了 POST。所以这个问题可能来自您的服务器。尝试使用 post man chrome plugin 测试您的服务器 api看看你的错误来自哪一边。

关于php - HttpURLConnection setRequestMethod 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31050918/

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