【GO】网络请求例子

post请求;multipart/form-data类型

// 构建请求参数
	requestData := map[string]interface{}{
		"gb":           "",
		"code":         "",
		
		"reMemberInfo": map[string]interface{}{
			"shi":        "",
			"qu":         "",
		},
		
	}
	// 将请求参数编码为JSON格式
	requestDataJSON, err := json.Marshal(requestData)
	if err != nil {
		return "将请求参数编码为JSON格式失败", err
	}

	// 目标URL
	url := "http://www.xxxx.cn/xxxx"

	// 准备要发送的数据 ;三个参数
	orderNo := ""
	orderData := string(requestDataJSON) // 特殊情况,正常不需要这种数据
	source := ""

	// 创建一个Buffer用于构建multipart请求体
	body := &bytes.Buffer{}
	writer := multipart.NewWriter(body)

	// 添加orderNo参数
	orderNoField, _ := writer.CreateFormField("orderNo")
	orderNoField.Write([]byte(orderNo))

	// 添加orderData参数
	orderDataField, _ := writer.CreateFormField("orderData")
	orderDataField.Write([]byte(orderData))

	// 添加source参数
	sourceField, _ := writer.CreateFormField("source")
	sourceField.Write([]byte(source))

	// 关闭multipart写入器
	writer.Close()

	// 创建一个HTTP请求
	request, err := http.NewRequest("POST", url, body)
	if err != nil {
		return "创建请求时失败", err
	}

	// 设置请求头,指定Content-Type为multipart/form-data
	request.Header.Set("Content-Type", writer.FormDataContentType())

	// 发送请求
	client := &http.Client{}
	response, err := client.Do(request)
	if err != nil {
		return "发送请求时出错", err
	}
	defer response.Body.Close()

	// 处理响应
	if response.StatusCode == http.StatusOK {
		var responseData map[string]interface{}
		err = json.NewDecoder(response.Body).Decode(&responseData)
		if err != nil {
			return "析响应时出错", err
		}
		status, ok := responseData["status"].(string) // status当判断等于true为成功,其他需要根据具体业务修改
		if !ok {
			
			return "解析响应时无法获取状态信息", err
		}

		if status == "true" {
		return "成功", nil
		} else {
			statusInfo, ok := responseData["status_info"].(string)
			if !ok {
				
				return "接口返回未提供详细错误信息", err
			}
			
			return "请求失败,状态信息:", err
		}
	} else {
		return "请求失败,状态码:", err
	}

post请求;application/json类型

requestData := map[string]interface{}{
		"porder_no": "",
		"pam_gb":    []interface{}{},
	}

	// 将请求参数转换为JSON格式
	requestBody, err := json.Marshal(requestData)
	if err != nil {
		logc.Errorf(ctx, "无法编码请求数据:", err)
		return nil, status.Errorf(400, "系统异常")
	}
	fmt.Println("请求数据:")
	fmt.Println(string(requestBody))
	// 发送POST请求
	url := "http://"
	resp, err := http.Post(url, "application/json", bytes.NewBuffer(requestBody))
	if err != nil {
		logc.Errorf(ctx, "POST请求失败:", err)
		return nil, status.Errorf(400, "系统异常")
	}
	defer resp.Body.Close()

	// 读取响应数据
	responseBody, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		logc.Errorf(ctx, "无法读取响应数据:", err)
		return nil, status.Errorf(400, "系统异常")
	}

	// 解析响应JSON
	var response map[string]interface{}
	err = json.Unmarshal(responseBody, &response)
	if err != nil {
		logc.Errorf(ctx, "无法解析响应JSON:", err)
		return nil, status.Errorf(400, "系统异常")
	}

	// 打印响应数据
	fmt.Println("响应数据:")
	fmt.Println(response)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淡忘_cx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值