这代码写的一半是 err 判断的感觉
···go
func GetFileName(hash string, sid string) (string, error) {
apiUrl := Url + "/api/v2/torrents/files"
data := url.Values{}
data.Add("hash", hash)
req, err := http.NewRequest("POST", apiUrl, strings.NewReader(data.Encode()))
if err != nil {
return "", fmt.Errorf("创建请求失败: %w", err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Cookie", "SID="+sid)
client := &http.Client{}
resp, err :=
client.Do(req)
if err != nil {
return "", fmt.Errorf("请求失败: %w", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("服务器返回错误状态码: %d", resp.StatusCode)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", fmt.Errorf("读取响应体失败: %w", err)
}
var data []Data
if err := json.Unmarshal(body, &data); err != nil {
return "", fmt.Errorf("解析 JSON 失败: %w", err)
}
if len(data) == 0 {
return "", fmt.Errorf("未找到文件数据")
}
return data[0].Name, nil
}
···