在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
内是否仍然嵌入了这种类型的错误?
答案 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解码器或其他任何内容。