ワンクリックで
http-warn-curl
Add WARN logging with curl command when HTTP response status code is not 200 in SDK/API client classes using UNet
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Add WARN logging with curl command when HTTP response status code is not 200 in SDK/API client classes using UNet
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Add HTTP non-200 warning logging with curl commands in Java HTTP client classes — helper method, per-call invocation, header/body inclusion
Review and fix common bugs in async Java database write patterns — connection lifecycle, thread safety, thread pool usage, bounded queues, memory control
Audit and fix SQL injection vulnerabilities in Java code — quote escaping, whitelist validation, URL encoding, and string comparison bugs
| name | http-warn-curl |
| description | Add WARN logging with curl command when HTTP response status code is not 200 in SDK/API client classes using UNet |
| source | auto-skill |
| extracted_at | 2026-06-29T11:49:09.655Z |
在 API SDK / 客户端类(如 ClientSdk、ServerSdk)中,使用 UNet 发起 HTTP 请求后,当服务端返回非 200 状态码时,输出 WARN 日志(含状态码、方法、URL)以及一条可直接在终端执行的 curl 命令,方便快速排查问题。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOGGER = LoggerFactory.getLogger(YourClass.class);
logNon200Warning 辅助方法/**
* 当 HTTP 状态码不为 200 时,输出 WARN 日志和对应的 curl 命令
*
* @param net UNet 实例
* @param method HTTP 方法 (GET/POST/PUT/DELETE)
* @param url 请求 URL
* @param body 请求体(可为 null)
*/
private void logNon200Warning(UNet net, String method, String url, String body) {
int statusCode = net.getLastStatusCode();
if (statusCode == 200) {
return;
}
LOGGER.warn("HTTP status code {} for {} {}", statusCode, method, url);
StringBuilder curl = new StringBuilder();
curl.append("curl -X ").append(method).append(" '").append(url).append("'");
// 根据实际情况调整 Authorization header 格式
if (StringUtils.isNotBlank(this.tokenField)) {
curl.append(" -H 'Authorization: ").append(this.tokenField).append("'");
}
// Bearer token 场景
// curl.append(" -H 'Authorization: Bearer ").append(this.serverToken).append("'");
if (StringUtils.isNotBlank(body)) {
// 转义 body 中的单引号,安全拼接
String escaped = body.replace("'", "'\\''");
curl.append(" -d '").append(escaped).append("'");
}
LOGGER.warn("Curl: {}", curl);
}
模板代码 — 在 net.doGet/doPost/doPut/doDelete/postMsg 之后紧接着调用:
// GET 请求 - 无 body
UNet net = this.createNet();
String rst = net.doGet(url);
this.logNon200Warning(net, "GET", url, null);
// POST 请求 - 有 body
UNet net = this.createNet();
String rst = net.doPost(url, bodyStr);
this.logNon200Warning(net, "POST", url, bodyStr);
// PUT 请求 - 有 body
UNet net = this.createNet();
String rst = net.doPut(url, bodyStr);
this.logNon200Warning(net, "PUT", url, bodyStr);
// DELETE 请求 - 无 body
UNet net = this.createNet();
String rst = net.doDelete(url);
this.logNon200Warning(net, "DELETE", url, null);
// DELETE 请求 - 有 body
UNet net = this.createNet();
String rst = net.doDelete(url, bodyContent);
this.logNon200Warning(net, "DELETE", url, bodyContent);
// postMsg 是 doPost 的别名
UNet net = this.createNet();
String rst = net.postMsg(url, bodyContent);
this.logNon200Warning(net, "POST", url, bodyContent);
JSONObject body 变量,提取字符串时请改用不同变量名(如 bodyStr)UNet 设置的 header 格式来构建 curl 的 -H 参数null,辅助方法内部会跳过 -d'\'' 转义,确保 bash 下安全执行