HTTP-methods and encoding

ikod geller.garry at gmail.com
Sun Apr 8 06:51:22 UTC 2018


On Saturday, 7 April 2018 at 23:54:21 UTC, Vindex wrote:
> On Saturday, 7 April 2018 at 15:58:14 UTC, Seb wrote:
>> On Saturday, 7 April 2018 at 13:02:39 UTC, Vindex wrote:
>>> There is an error on some sites when using HTTP-methods 
>>> (std.net.curl.get, std.net.curl.post):
>>> std.encoding.EncodingException at std/encoding.d(2505): 
>>> Unrecognized Encoding: utf8
>>>
>>> Is there a beautiful way around it?
>>> For the GET-method I use the download() and readText(). But 
>>> for the POST-method I can not come up with an alternative 
>>> solution.
>>
>> That's weird. std.net.curl should be able to handle UTF-8.
>> What content are you trying to download/post?
>> Maybe you can open a bug report for it?
>>
>> In any case, you might want to checkout requests:
>>
>> https://github.com/ikod/dlang-requests
>>
>> It's by far more convenient to use than std.net.curl
>
> The problem is that "utf-8" (or "UTF-8") is required instead of 
> "utf8".
>
> I tried to get HTML and JSON. For example, this GET-query 
> returns error:
> "https://yobit.net/api/3/ticker/btc_usd"
>
> Thank you for the advice

Hello,

"utf-8" (or "UTF-8") is required instead of "utf8" - explain, 
please.

Anyway this code works as expected:

import requests;
import std.stdio;
import std.format;

void main() {
     auto rq = Request();
     auto rs = rq.get("https://yobit.net/api/3/ticker/btc_usd");
     writeln(rs.responseBody);
}

output:

{"btc_usd":{"high":7216.09463851,"low":6950,"avg":7083.04731925,"vol":753989.73116823,"vol_cur":105.94453165,"last":7114,"buy":7114.00000000,"sell":7135.19110000,"updated":1523170067}}



More information about the Digitalmars-d-learn mailing list