如果Elm中的Http.get请求收到不同于预期响应的其他类型的响应,会发生什么情况?

时间:2019-03-22 12:34:53

标签: http elm

在Elm教程Http section中,有一个代码示例,其中定义了Cmd供运行时处理:

Http.get
      { url = "https://elm-lang.org/assets/public-opinion.txt"
      , expect = Http.expectString GotText
      }

因此,我们希望服务器响应为文本,并将消息类型(GotText)传递给Http.expectString函数,以便稍后将结果附加到GotText。这是GotText的定义(类型为Result):

type Msg
  = GotText (Result Http.Error String)

因此,如果在请求期间发生任何错误,再加上预期的响应类型,则会在附加到Http.Error的{​​{1}}内部捕获该错误,否则会发生运行时错误(在ELm中不是如此) 。我的问题是,如果服务器返回文本以外的其他内容(即二进制)怎么办? AFAIK不存在诸如GotText这样的Http错误,那么ELm中的bad response内是否仍然嵌入了这种类型的错误?

1 个答案:

答案 0 :(得分:5)

但是有。来自elm/http docs on Http.Error

  

//This is my function, just a global function void GlobalCEFApp_OnWebKitInitialized(); //For GlobalCEFApp object I want to assign my function to a member function OnWebKitInitialized of that object GlobalCEFApp = new TCefApplication(); // I tried this: GlobalCEFApp->OnWebKitInitialized = GlobalCEFApp_OnWebKitInitialized; GlobalCEFApp->OnWebKitInitialized = &GlobalCEFApp_OnWebKitInitialized; GlobalCEFApp->OnWebKitInitialized = (_di_TOnWebKitInitializedEvent*)GlobalCEFApp_OnWebKitInitialized; GlobalCEFApp->OnWebKitInitialized = reinterpret_cast<TOnWebKitInitializedEvent &>(GlobalCEFApp_OnWebKitInitialized); //But only this compiled, however it gives access violation at runtime GlobalCEFApp->OnWebKitInitialized = ( _di_TOnWebKitInitializedEvent &)GlobalCEFApp_OnWebKitInitialized; 表示您返回的响应带有良好的状态代码,但是   回应的内容出乎意料。这个字符串   case是一条调试消息,它说明您的问题所在   JSON解码器或其他任何内容。