asp.net 发送http get请求,然后取返回来的文件或者字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 发送http get请求,然后取返回来的文件或者字符串相关的知识,希望对你有一定的参考价值。

在微信开发的时候,向微信服务器发送http请求,下载我之前上传的Img,
然后把下载到的img转成二进制存到数据库里面

接口调用请求说明
http请求方式: GET
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID

正确情况下的返回HTTP头如下:
HTTP/1.1 200 OK
Connection: close
Content-Type: image/jpeg
Content-disposition: attachment; filename="MEDIA_ID.jpg"
Date: Sun, 06 Jan 2013 10:20:18 GMT
Cache-Control: no-cache, must-revalidate
Content-Length: 339721
curl -G "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"

错误情况下的返回JSON数据包示例如下(示例为无效媒体ID错误)::
"errcode":40007,"errmsg":"invalid media_id"

请问我怎么写代码,我可以既获取文件也知道错误信息

你的MEDIA_ID没传递给微信,所以会返回错误,还有你的ACCESS_TOKEN访问令牌也没改,这两个参数给正确才会返回图片信息
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"
参考技术A 会获取的话,还有什么问题?
判断一下ContentType就能知道返回的是正常的图片,还是返回的错误信息。追问

我要的是代码

参考技术B 他也不知道,是来混分儿的。我也正愁这个问题呢

从角度12将类对象发送到asp.net core web api http get方法

【中文标题】从角度12将类对象发送到asp.net core web api http get方法【英文标题】:Sending class objet to asp.net core web api http get method from angular 12 【发布时间】:2021-12-21 06:44:51 【问题描述】:

我有一个如下的 web api 方法 `

[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase

    private readonly ISearchService _searchService;

    public TestController(IRequestService searchService)
    
        _searchService = searchService;
    

    [HttpGet, Route("search")]
    public List<ResponseViewModel> search([FromBody] SearchViewModel search)
    
        return _searchService.GetSearchResults(search);
    
`

SearchViewModel.cs

`public class SearchViewModel
     
          public int ProductId  get; set;      
          public int StatusId  get; set; 
          public int ItemId   get; set; 
     
`

问题:

我想从 Angular 12 向上面的 Http Get 操作方法发送一个 SearchViewModel 类类型的对象。

我可以通过 [FromBody] 装饰 search 参数来使用 HttpPost 来实现这一点。但是有人可以告诉我如何使用 HttpGet 来做到这一点。

提前致谢。

【问题讨论】:

【参考方案1】:

HttpGet 无法发布正文。所以你不能用 HTTP get 方法传递一个对象。但是您可以传递 URL 查询参数,然后稍后在控制器中捕获它们。

例如您可以通过查询参数传递这些数据。那么你的 url 可能是这样的,带有查询参数。

http://yourbaseurl/search?ProductId=1&StatusId=34&ItemId=190

然后你可以像这样在 c# 中捕获参数。

public IActionResult YourAction([FromQuery(Name = "ProductId")] string productId,[FromQuery(Name = "StatusId")] string statusId, [FromQuery(Name = "ItemId")] string itemId)

    // do whatever with those params

【讨论】:

以上是关于asp.net 发送http get请求,然后取返回来的文件或者字符串的主要内容,如果未能解决你的问题,请参考以下文章

无法使用javascript向ASP.NET web api Controller发送http POST请求

ASP.NET Web API - 请求的资源不支持 http 方法“GET”

asp.net后台 怎么发送http请求?

asp.net运行原理及机制

从角度12将类对象发送到asp.net core web api http get方法

从 Angular 向 Asp.net 发送 post 请求时出现错误 405