次のコードは、あなたの問題を解決します。通常、APIを指しているだけでは基本アドレスの変更はありませんが、最終目標が何であるか分かりません。
モデル
あなたはハードだけのユーザー入力からのベースアドレスを設定する必要がありスキームとパスをコーディングに計画しているので。
public class Model
{
public string BaseAddress { get; set; }
public string Scheme { get { return "http://"; } }
public string Path { get { return ":8124/api/Items"; } }
public string WebServiceURL {
get {
return Scheme + BaseAddress + Path;
}
}
}
実装
私はここで、送信ボタンを使用してテスト項目を作成しました。
private Entry _urlEntry = new Entry { Placeholder = "url" };
private Button _submit = new Button { Text = "Submit" };
private Model _model;
public BackPage()
{
Content = new StackLayout
{
Children = { _urlEntry, _submit }
};
_submit.Clicked += Submit_Clicked;
}
ボタンイベント
あなたが実際にここにあなたのモデルをインスタンス化する必要はありません。私はただの例では、何のためにそれを必要としません。
private void Submit_Clicked(object sender, System.EventArgs e)
{
var text = _urlEntry?.Text;
if(text.Length > 0)
{
_model = new Model { BaseAddress = text };
MakeRequest(_model.WebServiceURL);
}
else
{
DisplayAlert("Error", "Entry field is empty", "ok");
}
}
あなたがModel.BaseAddressを設定したら、あなたが探している正しい "FinalIPAdress" を持つことになります見ることができるここで要求
private void MakeRequest(string url)
{
}
出力ここ
ください。
![url after setting baseaddress from input](https://i.stack.imgur.com/dLou5.png)
どの特定の行が例外をスローしていますか、それを引き起こす特定の引数は何ですか?なぜあなたはIPアドレスをURLエンコードしていますか? – Jason
public static readonly string WebServiceUrl = System.Net.WebUtility.UrlEncode(最終IPアドレス);これは、この例外をスローする行です。変数 "FinalIPAddress"をコードの背後にあるビューモデルに渡しています。 "FinalIPAddress"は、ユーザーが入力したIPAddressを含むconacatenated文字列です。 – user1508599
このクラスがインスタンス化されると、WebServiceUrlはnullになります。なぜFinalIPAddressプロパティの値を設定しないのですか? –