Contacting weather.gov resulted in a really fast response, which was:
Applications accessing resources on weather.gov now need to provide a User-Agent header in any HTTP request. Requests without a user agent are automatically blocked. We have implemented this usage policy due to a small number of clients utilizing resources far in excess of what most would consider reasonable.
We recommend providing a user agent string in the following format:
ApplicationName/vX.Y (http://your.app.url/; contact.email@example.com)
This will both uniquely identify your application and allow us to contact you and work with you if we observe abnormal application behavior that may result in a block.
Please feel free to email us back if you continue to have issues after verifying that your application is sending the proper headers.
Thanks for using weather.gov.
=======
Here's a snip of C# code. The key thing is that you need to create the request object then append a custom User-Agent string to it before making the call.
...var request = new HttpRequestMessage(HttpMethod.Post, httpClient.BaseAddress.AbsoluteUri);request.Headers.Add("User-Agent", "MyApplication/v1.0 (http://foo.bar.baz; foo@bar.baz)");var httpResponse = httpClient.SendAsync(request).Result;...
Hope this helps folks.Cheers